10

セットタグを使用してStruts2で動的変数を作成しようとしています

<s:set var="myNum" value="numConst" />
<s:set var="number" value="%{getText('@xxx.CommonConstant@'+#myNum)}" />

numConstデータベースから取得した動的な値を返します。たとえば、値が NINE の場合、number は次のようになります。@xxx.CommonConstant@NINE

@xxx.CommonConstant@NINEを返すように、Java クラスに値を設定しました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 ... 
}

誰でも私を助けることができますか?

4

2 に答える 2

10

回避策のようですが、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>
于 2013-05-23T12:13:19.250 に答える