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