java - Struts 2 动态变量

标签 java jsp struts2 ognl dynamic-variables

我正在尝试使用 set 标签在 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>

通用常量:

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 来评估字符串。

<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>

关于java - Struts 2 动态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16712395/

相关文章:

java - 如何在 Struts 1 中进行 URL 重定向?

java - 如何获取Struts 2标签中复选框的选中值<s :checkbox> into action class

java - 在 Struts2 中维护多个 JDBC 连接

java - 在android中隐藏按钮上的文字?

java - 使用 Java (Android) 连接到 IOCP 服务器

java - 将 ResultSet 从 servlet 传递到 JSP

java - 在自定义 JSP 标记中传递 Java 对象值

java - 使用 getResponse().getOutputStream().write 缺少图像的底部部分

java - 如何在一定时间后调用方法

Java - System.out 的 PrintStream 流是什么?