[Seasar-user:17969] SAStrutsにてフォームの値をActionFormのMapにて受ける方法

hirokazu tayama [E-MAIL ADDRESS DELETED]
2009年 7月 10日 (金) 16:19:04 JST


田山と申します。お世話になります。

http://d.hatena.ne.jp/higayasuo/20090605/1244174108

こちらのURLを見て、SAStruts1.0.4-sp6にてActionFormに
Mapを入れる対応を試してみたのですが、うまくいきません。

未リリースのモジュールに関する質問で恐縮ですが、
やり方に誤りが無いか、また正しい書き方をご教示頂けないでしょうか。

以下、試したことです。

1.上記URLのページどおり、ActionFormに

public Map<String, Object> map;

と書き、JSPに

<html:text property="map(hoge)"/>

と書く。

→画面表示時に例外
Caused by: java.lang.IllegalStateException: The value of property(map) is null.
	at org.seasar.struts.action.ActionFormWrapper.get(ActionFormWrapper.java:133)
	at org.apache.commons.beanutils.PropertyUtilsBean.getMappedProperty(PropertyUtilsBean.java:528)
	at org.apache.commons.beanutils.PropertyUtilsBean.getMappedProperty(PropertyUtilsBean.java:485)
	at org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:682)
	at org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:715)
	at org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:290)
	at org.apache.struts.taglib.TagUtils.lookup(TagUtils.java:951)
	at org.apache.struts.taglib.html.BaseFieldTag.prepareValue(BaseFieldTag.java:121)
	at org.apache.struts.taglib.html.BaseFieldTag.renderInputElement(BaseFieldTag.java:102)
(StackTraceは省略しています)


2.ActionFormのMap定義を

public Map<String, Object> map = new HashMap<String, Object>();

に変更

→画面は表示される。
 ただし、submitしてもMapに値が入らない。

3.jspの書き方を

<html:text property="map.hoge"/>
に変更

→mapに値が入る。
 ただし、multiboxで
<html:multibox  property="map.fuga" value="1"/>
<html:multibox  property="map.fuga" value="2"/>
 のように指定して複数チェックした場合、値が一つしか入らない。

以上、ご確認よろしくお願いいたします。


Seasar-user メーリングリストの案内