0

オプションのオブジェクト関連リストのデフォルト値を表示するように、freemarker struts2 select タグを作成できません。

私の行動では:

private List<CodeLabel> modifRoomTypeOpt; 

内部には、S:Single、D:Double などの値を持つオブジェクト CodeLabel があります。

<@s.select id="123123"
  name="roomModif[2].type"
  value="${modifiedRoom.type}"
  list="modifRoomTypeOpt" listKey="code" listValue="label"/>

生成された html では、S、D、T などの値を持つオプションと、Single、Double などのラベルが表示されるため、CodeLabel オブジェクトの反復処理が行われました。しかし、私の選択では、最初のオプションが常に事前に選択されています。${modifiedRoom.type} の値とその 'D' を確認しました。値 D のオプションが事前に選択されていないのはなぜですか?

4

2 に答える 2

1

面白い、

少し調査とコードのデバッグを行ったところ、value属性が OGNL 変数として評価されることがわかりました。これは、Struts2 がスタックを調べて、value属性に入力した文字列と一致する変数を探すことを意味します。

内部的には、評価された結果がnameValueとして属性のリストに入れられます。

そのため、驚くべきことに、 valueの代わりに属性nameValueを使用することが、特定の値で事前に選択された select 要素を持つ良い回避策であることがわかりました。

あなたの場合:

<@s.select id="123123"
name="roomModif[2].type"
nameValue="${modifiedRoom.type}"
list="modifRoomTypeOpt" listKey="code" listValue="label"/>

またはまた:

<@s.select id="123123"
name="roomModif[2].type"
nameValue=modifiedRoom.type
list="modifRoomTypeOpt" listKey="code" listValue="label"/>
于 2013-01-25T11:31:29.337 に答える
0

デフォルト値を設定するには、たとえば select タグの value 属性を設定する必要があります。

<@s.select id="123123"
name="roomModif[2].type"
value="${modifiedRoom.type}"
list="modifRoomTypeOpt" listKey="code" listValue="label"
value="modifRoomTypeOpt.get(1)"   />

コードはテストされていませんが、動作するはずです。参考のためにhttp://struts.apache.org/2.0.12/docs/select.htmlを使用してください

select 要素にデフォルトのヘッダーを設定する場合は、headerKey および headerValue 属性を使用します。

于 2012-07-09T08:28:41.773 に答える