【问题标题】:Struts 2 dynamic variablesStruts 2 动态变量
【发布时间】: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 我猜是因为我习惯使用本地化,直到我尝试过.. 但是 也会给我预期的价值但不是
  • 呸。如果您确实需要它,请更改它在服务器端的工作方式;制作真实地图。这样也更容易测试。

标签: java jsp struts2 ognl dynamic-variables


【解决方案1】:

这似乎是一种解决方法,但您可以使用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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-28
      • 2013-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-15
      • 1970-01-01
      • 2015-04-03
      相关资源
      最近更新 更多