- PR -

struts ActionFormのMap変数について

1
投稿者投稿内容
raystar
ぬし
会議室デビュー日: 2003/01/16
投稿数: 251
お住まい・勤務地: Tokyo/Japan
投稿日時: 2005-03-01 17:09
こんにちは。

ActionFormのフィールドを
コード:
private Map map = new HashMap();

public void setMap(Map val) { map=val;}

public Map getMap() { return map;}


とした場合に、

map.put("key", new ArrayList());

のようなエミュレーションは可能でしょうか。

こんな場合の時。。。。

<html:select property="map(1)" multiple="multiple">
<html:option .....>
</html:select>

<html:select property="map(2)" multiple="multiple">
<html:option .....>
</html:select>

このようなフォームの場合、
map(1) を複数選択しても、そのうち一つしか map(1) に入りませんでした。

map.put("1", xx) ← xx の部分はStringのみでしょうか。

どなたかご教授ください。
ふーばー
大ベテラン
会議室デビュー日: 2003/06/05
投稿数: 163
投稿日時: 2005-03-02 09:28
デフォルトではムリです。commons-beanutils の BeanUtils を見るとわかりますが、
マップに対しては、配列の先頭を格納するようになっています。
raystar
ぬし
会議室デビュー日: 2003/01/16
投稿数: 251
お住まい・勤務地: Tokyo/Japan
投稿日時: 2005-03-02 09:51
ふーばーさん

おはようございます。
早速レスありがとうございます。

なるほど、、、、納得いたしました。

このようなケースの場合、デフォルトの機能では難しいということですよね。。
何かいい方法がないか模索してみます。
ふーばー
大ベテラン
会議室デビュー日: 2003/06/05
投稿数: 163
投稿日時: 2005-03-02 10:28
要件がわからないので外しているかもしれませんが、
コード:
<input type="hidden" name="foo[0].key" value="1">
<html:select property="foo[0].selection" multiple="multiple"> 
<html:option .....> 
</html:select>


のようにして、マッピングを自分でやる方法もありますね。
raystar
ぬし
会議室デビュー日: 2003/01/16
投稿数: 251
お住まい・勤務地: Tokyo/Japan
投稿日時: 2005-03-02 14:46
ふーばーさん、こんにちは。

なるほど。。。。
KEYを送信して、String[]配列をなげれば、できそうですね。

ありがとうございました!
1

スキルアップ/キャリアアップ(JOB@IT)