Struts 2 if tag : 用常量测试

Yev*_*Yev 4 if-statement struts2 constants

我正在制作以下代码:

<s:if test="%{#beanVar == com.mycompany.project.NOT_REGISTERED} ">
 <td>NOT REGISTRED</td>
</s:if>
Run Code Online (Sandbox Code Playgroud)

其中com.mycompany.project.NOT_REGISTERED是一个类静态字段:

public static final long NOT_REGISTERED == 0;
Run Code Online (Sandbox Code Playgroud)

我在 Struts2 文档中找不到在运行时评估中公开常量的方法。

在此先感谢您的帮助。

PS:我不想使用老式的构造 <% %>

ped*_*rce 5

来自OGNL基础知识:

访问静态属性 OGNL 支持访问静态属性以及静态方法。

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

OGNL 的静态访问如下所示:

@some.package.ClassName@FOO_PROPERTY
@some.package.ClassName@someMethod()
Run Code Online (Sandbox Code Playgroud)

但是,XWork 允许您避免指定完整的包名称并使用“vs”前缀调用操作类的静态属性和方法:

@vs@FOO_PROPERTY @vs@someMethod()
@vs1@FOO_PROPERTY @vs1@someMethod()
@vs2@BAR_PROPERTY @vs2@someOtherMethod()
Run Code Online (Sandbox Code Playgroud)

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

问候,

  • 来自 test 的值已经被评估为一个 OGNL 表达式,尝试: test="beanVar == @com.mycompany.project@NOT_REGISTERED}" (2认同)