2012-02-23 35 views
14

私は現在struts2と一緒に作業していますが、${var}#{var}%{var}の違いはどういう意味なのですか?何ですかですか?任意のアイデア(括弧なし)ここ

<s:select label="Year" 
     id="%{param.name}" 
     list="#{'2010':'2010','2011':'2011','2012':'2012','2013':'2013','2014':'2014', '2015':'2015'}" 
     value="%{currentYear}" 
     required="true" 
/> 

それは連想配列だように見えますが、私はそれを見てきた他の回は#varとしてあります:

私は#の例を発見しましたか?

+2

関連:[JSP EL、JSF ELとユニファイドELの違い](HTTP: //stackoverflow.com/questions/4812755/difference-between-jsp-el-jsf-el-and-unified-el)(これはStruts特有のOGNLをカバーしていない) – BalusC

答えて

18
  • ${} - 標準JSP EL表記です。
  • #{} - 標準UEL表記。それを使用していない、動作する可能性があります。
  • %{} - OGNL発現表記。

JSP EL表記は、値のスタックにルックアップを優先するリクエストラッパーがあるために機能し、値スタックに値が見つからない場合は通常のJSP評価に戻ります。

OGNL式はS2タグ内でのみ有効です。 IMO OGNL式を評価しているときはいつでも使用するべきですが、これは非常にオプションです。 それはオプションですが、なんとかクラップシュートです。それはしばしば、必ずしもそうではありません。それを使用し、明示的かつコミュニケーション的であることがベストです。

あなたなど#session#のように、およそ#変数を尋ねるすることができる「マップ」の部分にあります値スタック上の値を解決するために使用されます。値のスタックはスタックとスコープの組み合わせとして表示されます。オブジェクトがスタックにプッシュされている場合は、#は必要ありません。値がで作成された場合は、となり、#が必要です。ちょうど別のノート

<s:set var="foo" value="'plugh'"/> 
<s:property value="#foo"/> 
1

あなたの$を使用することができますが、変数を作成するために<s:set>を使用する場合

たとえば、あなたは次のように、#接頭辞を使用してアクセスする必要がありますアクションを使用してストラットにOGNLに対するパラメータを評価してから、他のメソッドに渡すようにしてください。

カスタムバリデータ

Struts 2 - reusing Custom Expression Validator

OR

を変更し、ダウンロードファイル名

Struts 2 Download - How to configure the file name dynamically?

関連する問題