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

Conditional expression in JSP with Struts2 tag

我维护一个用 Struts2 开发的旧应用程序。

我将 Struts2 库从 2.3.19 更新到 2.3.24。

我正在使用 jdk8 部署到 Tomcat8。

在 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?

当我将 <s:property value="%{ficheCourante}"></s:property> 添加到 JSP 时,它显示 com.mycompany.myapp.MyCalss2@46e9d4ac

由于 security reasons,JSP 中的

Class 检索(即 current.getClass())不再被允许。在您的操作 class 中创建一个方法并在那里进行比较。在 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)

顺便说一句,目前最新的 S2 版本是 2.3.28