[Seasar-user:3143] Re: [S2Struts] s2strutsタグsubmitのindexIdの使用方法を教えてください
Ichimaru
ichimaru_s
2006年 2月 4日 (土) 04:01:11 JST
市丸と申します
お返事が遅れて申し訳ございません。
アドバイス有難うございます。
> 現状では、submitタグのindexId属性は、
> action属性と同時に利用することができません。
> indexId属性を利用する場合は、以下のようにpropertyを指定して利用します。
>
> ===============================================================
> [JSP]
> <logic:iterate id="Test" name="indexList" indexId="index">
> <s2struts:submit property="arg" indexId="index" />
> </logic:iterate>
> ---------------------------------------------------------------
> [HTML]
> <input type="submit" name="arg[0]" value="Submit">
> <input type="submit" name="arg[1]" value="Submit">
> ==============================================================
なるほど。と思い、早速試してみたのですが、
別のエラーが発生してしまいました。
==============================================================
変更したjspです
<logic:iterate id="id" name="indexList" indexId="index">
<s2struts:submit property="methodIndex" indexId="index"/>
</logic:iterate>
==============================================================
Action、Form(Dto)、Actionインターフェースに、
想定できるメソッドを用意しましたが解決できませんでした。
public String methodIndex(int index, Object value);
public String methodIndex(Object value);
public String methodIndex(int index);
void setMethodIndex(int index, Object value);
void setMethodIndex(Object value);
void setMethodIndex(int methodIndex);
int getMethodIndex();
int getMethodIndex(int index);
void setIndex(int index);
int getIndex();
void Submit();
==============================================================
エラーです
java.lang.IllegalArgumentException: Property 'methodIndex' has
no indexed write method
org.apache.commons.beanutils.WrapDynaBean.set(WrapDynaBean.java:263)
org.seasar.struts.interceptors.ProcessPojoFormInterceptor$SerializeBeanValidatorForm.set(ProcessPojoFormInterceptor.java:273)
org.apache.commons.beanutils.PropertyUtilsBean.setIndexedProperty(PropertyUtilsBean.java:1361)
org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1016)
org.apache.commons.beanutils.BeanUtilsBean.populate(BeanUtilsBean.java:811)
org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:298)
org.apache.struts.util.RequestUtils.populate(RequestUtils.java:493)
org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:804)
org.seasar.struts.processor.S2RequestProcessor.processPopulate(S2RequestProcessor.java:125)
org.seasar.struts.processor.AcceptorImpl.process(AcceptorImpl.java:88)
org.seasar.struts.processor.S2RequestProcessor.process(S2RequestProcessor.java:59)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.seasar.struts.filter.S2StrutsFilter.doFilter(S2StrutsFilter.java:45)
org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:60)
jp.ad.smartvalue.examples.om.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:173)
==============================================================
あと、下記のコードでも同じエラーが発生します。
<html:hidden property="methodIndex[0]" value="test"/>
単純なミスかもしれませんが、ご教授願います。
> この部分を読んでて思ったのですが、上記のように
> public String test(int index)
> でindexをわたしてメソッドを実行できるのも便利だなーと思いましたので、
> action属性とindexId属性を指定した場合、
> 上記形式のメソッドを呼び出す機能を追加しようと思います。
すごく便利になると思います。
どうか宜しくお願いいたします。
Seasar-user メーリングリストの案内