[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 メーリングリストの案内