私は現在Struts 2で作業しており、次のような状況にあります:
私のアクションクラスでは:
private Map<String, Map<Integer, MyEntity>> map;
public void setMap(Map<String, Map<Integer, MyEntity>> map) {
this.map = map;
}
public Map<String, Map<Integer, MyEntity>> getMap() {
return this.map;
}
私の JSP では、イテレータを使用して「キー」変数を使用してマップを調べ、次に (整数の) 別のリストを反復処理し、この整数を使用して 2 番目のマップを調べます。次のようにします。map[${key}][${myInteger}]
<s:iterator value="map" status="status">
<tr>
<td>${status.index}</td>
<td>${key}</td>
<s:iterator value="integersList" id="myInteger">
<td>
<s:textfield name="map[${key}][${myInteger}].myEntityAttribute" value="%{map[#attr.key][#attr.myInteger].myEntityAttribute}" id="attr_${key}_${myInteger}" theme="simple" size="10" />
</td>
</s:iterator>
</tr>
</s:iterator>
値を取得するためにこれを行うとうまくいきます:value="%{map[#attr.key][#attr.myInteger].myEntityAttribute}"
しかし、変更を保存したいときは、それを機能させることができません:name="map[${key}][${myInteger}].myEntityAttribute"
何が間違っているのかわからない、またはこれができない場合(方法があるに違いないと確信しています)、試してみるのにちょっとうんざりしています。
何か提案をいただければ幸いです。実際、役立つものは何でも歓迎します。