带有Struts2标记的JSP中的条件表达式

时间:2016-03-22 13:32:24

标签: jsp struts2 struts-tags

我维护了一个使用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

1 个答案:

答案 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