4

私は次のコードを作成しようとしています:

<s:if test="%{#beanVar == com.mycompany.project.NOT_REGISTERED} ">
 <td>NOT REGISTRED</td>
</s:if>

ここで、com.mycompany.project.NOT_REGISTEREDはクラス静的フィールドです:

public static final long NOT_REGISTERED == 0;

Struts2のドキュメントで、実行時評価で定数を公開する方法が見つかりません。

よろしくお願いします。

PS:昔ながらの構成を使いたくない<%%>

4

2 に答える 2

5

OGNL Basicsから:

静的プロパティへのアクセスOGNLは、静的メソッドだけでなく静的プロパティへのアクセスもサポートしています。

デフォルトでは、Struts 2はこれを禁止するように構成されています。OGNLの静的メンバーサポートを有効にするには、ConstantConfigurationメソッドのいずれかを介してstruts.ognl.allowStaticMethodAccess定数をtrueに設定する必要があります。

OGNLの静的アクセスは次のようになります。

@some.package.ClassName@FOO_PROPERTY
@some.package.ClassName@someMethod()

ただし、XWorkを使用すると、完全なパッケージ名を指定し、「vs」プレフィックスを使用してアクションクラスの静的プロパティとメソッドを呼び出す必要がなくなります。

@vs@FOO_PROPERTY @vs@someMethod()
@vs1@FOO_PROPERTY @vs1@someMethod()
@vs2@BAR_PROPERTY @vs2@someOtherMethod()

「vs」は「値スタック」を表します。ここで重要なのは、指定するクラス名が「vs」の場合、スタックの最上位にあるオブジェクトのクラスが使用されることです。「vs」文字列の後に数値を指定すると、代わりにスタックのより深いオブジェクトのクラスが使用されます。

よろしく、

于 2012-04-24T12:50:13.990 に答える
1
<s:if test="%{#beanVar == @com.mycompany.project@NOT_REGISTERED}">
  <td>NOT REGISTRED</td>
</s:if>

@がありません。

于 2012-04-24T14:40:18.760 に答える