Struts 2 动态变量
Posted
技术标签:
【中文标题】Struts 2 动态变量【英文标题】:Struts 2 dynamic variables 【发布时间】:2013-05-18 17:20:22 【问题描述】:我正在尝试使用 set tag 在 Struts2 中创建一个动态变量
<s:set var="myNum" value="numConst" />
<s:set var="number" value="%getText('@xxx.CommonConstant@'+#myNum)" />
numConst
将返回从数据库中检索到的动态值。例如,如果值为 NINE,则数字应为 @xxx.CommonConstant@NINE
我已经在我的 java 类中设置了值,以便 @xxx.CommonConstant@NINE
将返回 9
。
到目前为止,如果我使用,该值可以在文本标记中显示没有问题
<s:text name="%getText(#number)" />
它会返回9
,但是当我尝试使用属性标签时它显示不正确
<s:property value="%getText(#number)" />
<s:property value="%#number" />
<s:property value="#number" />
<s:property value="%getText('%getText(#number)')" />
以上所有示例都会给我@xxx.CommonConstant@NINE
的值。我尝试从属性标签中获取值的原因是因为我想复制有关如何显示值的正确方法,以便我可以在 if 标签中使用它们,如下例所示:
<s:if test="#number == 9">
do something
</s:if>
或
<s:if test="%getText(#number) == 9">
do something
</s:if>
CommonConstant:
package xxx;
public abstract class CommonConstant
public static final int NINE = 9;
public static final int NINEONE = 91;
public static final double ADMIN_PGM = 1.4;
// ... omitted ...
谁能帮帮我?
【问题讨论】:
CommonConstant
是什么?是enum
吗?你能显示代码吗?
getText
方法用于获取本地化文本。你为什么这样使用它?
package xxx; public abstract class CommonConstant public static final int NINE = 9; public static final int NINEONE = 91; public static final double ADMIN_PGM = 1.4; ... omitted ...
是的@AleksandrM 我猜是因为我习惯使用本地化,直到我尝试过.. 但是 这似乎是一种解决方法,但您可以使用attr
来评估字符串。
<s:set var="myNum" value="numConst" />
<s:set var="number" value="'@xxx.CommonConstant@'+#myNum" />
<s:property value="#attr[#number]"/>
<s:if test="#attr[#number] == 9">
do something
</s:if>
【讨论】:
【参考方案2】:您可以使用带括号的表达式来评估表达式的结果。
<s:if test="#number(0) == 9">
<s:property value="%#number(0)" />
</s:if>
查看 OGNL 语言指南的Expression Evaluation。
【讨论】:
以上是关于Struts 2 动态变量的主要内容,如果未能解决你的问题,请参考以下文章