一尘不染

使用Action数据模型值在Struts2 JSP中调用静态方法帮助程序类

jsp

我是Struts2新手。我将Struts2与UserItemAction中的典型数据模型一起使用。与Struts标记一起使用时,数据模型看起来不好<s:property value="userItem.foo"/>

我想要做的是编写一个静态util方法Helper.printNice(Foo),该方法采用参数Foo并在用户友好的显示中打印出Foo中包含的值。

如何将Struts属性标签与静态方法一起使用?像这样的东西 com.helper.Helper.printNice(<s:property value="userItem.foo"/>)

这样做的原因是我的Web应用正在读取由供应商填充的数据,该数据在许多列中看起来像[[string1],“
string2”,…]。显然,我不想以这种格式显示给最终用户。helper方法将使其看起来像string1
string2
,等等。


阅读 226

收藏
2020-06-08

共1个答案

一尘不染

编辑

2.3.20及更高版本开始,即使已在配置中激活,静态方法访问也将不再起作用。


对于静态方法访问,您需要:

在Struts.xml中

<constant name="struts.ognl.allowStaticMethodAccess" value="true"/>

在您的JSP中

<s:property value="@com.your.full.package.Classname@methodName(optionalParameters)" />

但是正如rees所指出的那样,如果不是绝对必要,则应避免这样做,因为这不是最佳实践。

在您的特定情况下,我猜包含[“ String1”,“ String2”,…]的对象是一个列表,一个Vector或类似的东西。

然后,您在JSP中所需的就是这样的<s:iterator>标记:

<s:iterator name="yourObjectContainingAListOfString">
   <s:property /> 
   <br/>
</s:iterator>
2020-06-08