我是Struts2新手。我将Struts2与UserItemAction中的典型数据模型一起使用。与Struts标记一起使用时,数据模型看起来不好<s:property value="userItem.foo"/>。
UserItem
<s:property value="userItem.foo"/>
我想要做的是编写一个静态util方法Helper.printNice(Foo),该方法采用参数Foo并在用户友好的显示中打印出Foo中包含的值。
Helper.printNice(Foo)
如何将Struts属性标签与静态方法一起使用?像这样的东西 com.helper.Helper.printNice(<s:property value="userItem.foo"/>)。
com.helper.Helper.printNice(<s:property value="userItem.foo"/>)
这样做的原因是我的Web应用正在读取由供应商填充的数据,该数据在许多列中看起来像[[string1],“ string2”,…]。显然,我不想以这种格式显示给最终用户。helper方法将使其看起来像string1 string2 ,等等。
编辑
从 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>
<s:iterator name="yourObjectContainingAListOfString"> <s:property /> <br/> </s:iterator>