4

我正在制作以下代码:

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

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

public static final long NOT_REGISTERED == 0;

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

在此先感谢您的帮助。

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

4

2 回答 2

5

来自 OGNL 基础:

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

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

OGNL 的静态访问如下所示:

@some.package.ClassName@FOO_PROPERTY
@some.package.ClassName@someMethod()

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

@vs@FOO_PROPERTY @vs@someMethod()
@vs1@FOO_PROPERTY @vs1@someMethod()
@vs2@BAR_PROPERTY @vs2@someOtherMethod()

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

问候,

于 2012-04-24T12:50:13.990 回答
1
<s:if test="%{#beanVar == @com.mycompany.project@NOT_REGISTERED}">
  <td>NOT REGISTRED</td>
</s:if>

@不见了。

于 2012-04-24T14:40:18.760 回答