2

s:select私が見たタグのStruts2チュートリアルで:

<s:select label="Pets"
       name="petIds"
       list="petDao.pets"
       listKey="id"
       listValue="name"
       multiple="true"
       size="3"
       required="true"
       value="%{petDao.pets.{id}}"
/>                          ^  ^

そして私の質問:なぜvalue="%{petDao.pets.{id}}"ですか?なぜ単純ではないのですvalue="%{petDao.pets.id}"か?末尾の中括弧は何を意味していますか?

4

3 に答える 3

5

これは、からすべての値をリストとして取得するためのOGNL リスト プロジェクションです。つまり、この中のすべての値が事前に選択されます。idpetDao.pets<s:select>

于 2013-01-29T10:28:27.430 に答える
1

必要ありません。タグのソース ファイルのエラーが原因ではないかと思われます。

それはそれで動作しますが、必要ではありません.IDE検証に失敗します(IDEがS2および/またはOGNL、たとえばIntelliJをサポートしている場合)、更新するメモを作成しました.

于 2013-01-28T15:50:07.397 に答える
0

主な理由は、%{} 構​​文を使用して、Struts が値を文字列リテラルとして処理する OGNL 評価を強制するためです。

例えば、

<s:property value="name" />

値スタックで name プロパティを探します。つまり、getName() を呼び出して取得した値です。

リテラル値「名前」を強制的に使用する場合は、%{} 構​​文を使用する必要があります -

<s:property value="%{'name'}" />

ソース: http://www.coderanch.com/t/420711/Struts/Struts

于 2013-01-28T15:43:47.640 に答える