调用静态方法辅助类在Struts2 JSP与行动数据模型值(Calling static metho

2019-07-02 15:35发布

我是个新手Struts2的。 我使用Struts2的具有典型的数据模型UserItem的行动中。 与Struts标签使用时数据模型不好看<s:property value="userItem.foo"/>

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

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

这样做的原因是我的web应用程序是阅读由供应商,它看起来像这样[“字符串1”,“字符串2”,...]在许多列填充数据。 很显然,我不想以这种格式向最终用户显示。 辅助方法将使它看起来像字符串1结果字符串2点击,等等......

Answer 1:

编辑

2.3.20和更高的 , 静态方法访问将不再起作用 ,即使在配置激活。


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

在struts.xml中

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

在你的JSP

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

但正如里斯指出,这应该是如没必要回避,因为它不是一个最佳实践。

在特定情况下,我想包含对象[“字符串1”,“字符串2”,...]是一个列表,或者一个矢量,或这样的事情。

然后你在你的JSP需要的是<s:iterator>这样的标签:

<s:iterator name="yourObjectContainingAListOfString">
   <s:property /> 
   <br/>
</s:iterator>


Answer 2:

对于静态方法来访问 ,你必须要添加以下在不断 struts.xml文件。

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

例如:struts.xml中

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <constant name="struts.ognl.allowStaticMethodAccess" value="true"/>
    <package name="default"  namespace="/" extends="struts-default">
        <action name="sampleAction" class="vaannila.SampleAction">
            <result name="success">/WEB-INF/JSP/sample.jsp</result>
        </action>     
    </package>
</struts>

然后从你的JSP可以以各种方式访问​​:

实施例- 1:

<b>Output :</b> <s:property value="@vaannila.SampleAction@getSTR()"/> <br>

哪里,

  1. vaannila =包名称。
  2. SampleAction =类名称。
  3. getSTR() =方法名称。

实施例- 2:

<b>Output :</b> <s:property value="@vs@getSTR()"/> <br>

哪里,

  1. vs =值栈。
  2. getSTR() =方法名称。

实施例- 3:

<b>Output :</b> <s:property value="%{STR}"/> <br>

哪里,

  1. STR = STR声明,并与您的Java类的getter和setter方法初始化为静态字符串


文章来源: Calling static method helper class in Struts2 JSP with Action data model value