If statement Struts 2 if标记:使用常量进行测试

If statement Struts 2 if标记:使用常量进行测试,if-statement,struts2,constants,If Statement,Struts2,Constants,我正在制作以下代码: <s:if test="%{#beanVar == com.mycompany.project.NOT_REGISTERED} "> <td>NOT REGISTRED</td> </s:if> 我在Struts2文档中找不到在运行时计算中公开常量的方法 提前感谢你的帮助 附言:我不想使用OGNL基础中的旧式结构: 访问静态属性 OGNL支持访问静态属性和静态方法 默认情况下,Struts 2被配置为不允许这样做——以启用

我正在制作以下代码:

<s:if test="%{#beanVar == com.mycompany.project.NOT_REGISTERED} ">
 <td>NOT REGISTRED</td>
</s:if>
我在Struts2文档中找不到在运行时计算中公开常量的方法

提前感谢你的帮助

附言:我不想使用OGNL基础中的旧式结构:

访问静态属性 OGNL支持访问静态属性和静态方法

默认情况下,Struts 2被配置为不允许这样做——以启用OGNL的 静态成员支持必须设置 struts.ognl.allowStaticMethodAccess常量通过以下任一 常量配置方法

OGNL的静态访问如下所示:

@some.package.ClassName@FOO_PROPERTY
@some.package.ClassName@someMethod()
但是,XWork允许您避免指定完整的包 命名和调用动作类的静态属性和方法 使用“vs”前缀:

“vs”代表“值堆栈”。这里要注意的重要一点是 如果您指定的类名只是“vs”,则 使用堆栈顶部的对象。如果在后面指定一个数字 使用“vs”字符串,即堆栈中较深的对象类 相反

关于,


<s:if test="%{#beanVar == @com.mycompany.project@NOT_REGISTERED}">
  <td>NOT REGISTRED</td>
</s:if>
未注册

@丢失。

奇怪的是,我添加了struts.ognl.allowStaticMethodAccess=true,并使用了您描述的语法,但它不起作用。可能是因为我试图访问静态字段,而不是静态方法?test中的值已经作为OGNL表达式计算,请尝试:test=“beanVar==@com.mycompany”。project@NOT_REGISTERED}“很酷,很高兴这样,那么你可以接受这个答案为有效;)
@vs@FOO_PROPERTY @vs@someMethod()
@vs1@FOO_PROPERTY @vs1@someMethod()
@vs2@BAR_PROPERTY @vs2@someOtherMethod()
<s:if test="%{#beanVar == @com.mycompany.project@NOT_REGISTERED}">
  <td>NOT REGISTRED</td>
</s:if>