我正在尝试使用set标签在Struts2中创建一个动态变量
<s:set var="myNum" value="numConst" /> <s:set var="number" value="%{getText('@xxx.CommonConstant@'+#myNum)}" />
numConst将返回从数据库检索的动态值。例如,如果值为NINE,则数字应为@xxx.CommonConstant@NINE
numConst
@xxx.CommonConstant@NINE
我在我的java类中设置了值,以便@xxx.CommonConstant@NINE返回9。
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。我尝试从property标签获取值的原因是因为我想复制有关如何显示值的正确方法,以便可以在if标签中使用它们,例如以下示例:
<s:if test="#number == 9"> do something </s:if>
要么
<s:if test="%{getText(#number)} == 9"> do something </s:if>
常数:
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 ... }
有谁能够帮助我?
似乎是一种解决方法,但是您可以使用它attr来评估字符串。
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>