4

私はStruts2の初心者です。UserItemアクション内の典型的なデータモデルでStruts2を使用しています。Struts タグで使用すると、データモデルの見栄えがよくありません<s:property value="userItem.foo"/>

私がやりたいことは、Helper.printNice(Foo)パラメーター Foo を受け取り、Foo に含まれる値をユーザーフレンドリーな表示に出力する静的な util メソッドを作成することです。

静的メソッドで Struts プロパティ タグを使用するにはどうすればよいですか? このようなもの com.helper.Helper.printNice(<s:property value="userItem.foo"/>)

この理由は、私の Web アプリが、多くの列で ["string1", "string2" , ...] のように、ベンダーによって入力されたデータを読み取っているためです。明らかに、この形式でエンド ユーザーに表示したくありません。ヘルパー メソッドを使用すると、string1 <br> string2<br> などのようになります。

4

2 に答える 2

7

編集

2.3.20 以降では、構成でアクティブ化されていても、静的メソッド アクセスは機能しなくなりました。


静的メソッドにアクセスするには、次が必要です。

Struts.xml で

<constant name="struts.ognl.allowStaticMethodAccess" value="true"/>

あなたのJSPで

<s:property value="@com.your.full.package.Classname@methodName(optionalParameters)" />

しかし、rees が指摘したように、これはベスト プラクティスではないため、厳密に必要でない場合は避けるべきです。

あなたの特定のケースでは、 ["String1","String2",...] を含むオブジェクトはリスト、またはベクトル、またはこのようなものだと思います。

JSP で必要なのは、次の<s:iterator>ようなタグだけです。

<s:iterator name="yourObjectContainingAListOfString">
   <s:property /> 
   <br/>
</s:iterator>
于 2012-10-26T09:47:28.553 に答える
1

静的メソッド アクセスの場合、ファイルに次の定数を追加する必要があります。struts.xml

<constant name="struts.ognl.allowStaticMethodAccess" value="true"/> 

例: struts.xml :

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <constant name="struts.ognl.allowStaticMethodAccess" value="true"/>
    <package name="default"  namespace="/" extends="struts-default">
        <action name="sampleAction" class="vaannila.SampleAction">
            <result name="success">/WEB-INF/JSP/sample.jsp</result>
        </action>     
    </package>
</struts>

次に、JSP からさまざまな方法でアクセスできます。

例 - 1:

<b>Output :</b> <s:property value="@vaannila.SampleAction@getSTR()"/> <br>

どこ、

  1. vaannila= パッケージ名。
  2. SampleAction= クラス名。
  3. getSTR()= メソッド名。

例 - 2:

<b>Output :</b> <s:property value="@vs@getSTR()"/> <br>

どこ、

  1. vs= バリュー スタック。
  2. getSTR()= メソッド名。

例 - 3:

<b>Output :</b> <s:property value="%{STR}"/> <br>

どこ、

  1. STR=STRは、Java クラスの getter メソッドと setter メソッドを使用して Static String として宣言および初期化されます。
于 2014-07-10T09:36:58.090 に答える