我维护了一个使用Struts2开发的旧应用程序。
我将Struts2库从2.3.19更新到2.3.24。
我使用jdk8部署到Tomcat 8。
在JSP中我有这样的条件,适用于旧的Struts2库,jdk 7和Tomcat 7)
<s:if test='%{current.getClass().name == "com.mycompany.myapp.MyCalss1"}'>
<div>Class1</div>
</s:if>
<s:if test='%{current.getClass().name == "com.mycompany.myapp.MyCalss2"}'>
<div>Class2</div>
</s:if>
从struts 2.3.19到2.3.24有什么变化吗?或者jdk8,Tomcat 8?
当我向JSP添加<s:property value="%{ficheCourante}"></s:property>
时,它会显示com.mycompany.myapp.MyCalss2@46e9d4ac
。
答案 0 :(得分:2)
由于security reasons,不允许在JSP中进行类检索(即current.getClass()
)。在动作类中创建一个方法并在那里进行比较。在JSP中,你可以这样称呼它。
<s:if test="compareCurrentClass('com.mycompany.myapp.MyCalss1')">
或者,如果您需要将current
的实例传递给比较方法,那么:
<s:if test="compareCurrentClass(current, 'com.mycompany.myapp.MyCalss1')">
在这种情况下,请在您的操作中声明compareCurrentClass
:
public boolean compareCurrentClass(Object current, String name)
BTW目前最新的S2版本为2.3.28
。