Try phone[0] and phone[1] Steve
> -----Original Message----- > From: Alexey N. Shananin [mailto:[EMAIL PROTECTED] > Sent: June 24, 2003 3:26 AM > To: Struts Users Mailing List > Subject: Accessing indexed properties in DynaActionForm (1.1rc2) > > > Hi! > I found no answer in an archives, so I'm asking now. > > I've got an indexed property "phone", which has fields "num" and > "pid"(phone ID) > the generated HTML is: > ---------------------------------------------------- > > <tr><td> > <input type="hidden" name="phone[1].pid" value="528078"> > <input type="text" name="phone[1].num" value="9795036"> (8) > </td></tr> > > <tr><td> > <input type="hidden" name="phone[2].pid" value="528738"> > <input type="text" name="phone[2].num" value="9563743"> (8) > </td></tr> > > ---------------------------------------------------- > The DynaActionForm bean in struts-config.xml: > > ---------------------------------------------------- > <form-bean name="EditRecordForm" > type="org.apache.struts.action.DynaActionForm"> > <form-property name="cid" type="java.lang.String"/> > <form-property name="name" type="java.lang.String"/> > <form-property name="phone" type="Phone[]"/> > </form-bean> > ---------------------------------------------------- > The "Phone" class has 2 java.lang.String private members (num, pid) with > public get/set methods. > > So, when I'm trying to call the Action's execute method, I got the > following exception occurs: > > ---------------------------------------------------- > javax.servlet.ServletException: BeanUtils.populate > at > org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1098) > at > org.apache.struts.action.RequestProcessor.processPopulate(RequestP > rocessor.java:816) > at > org.apache.struts.action.RequestProcessor.process(RequestProcessor > .java:254) > at > org.apache.struts.action.ActionServlet.process(ActionServlet.java:1420) > at > org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:520) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:760) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(A > pplicationFilterChain.java:247) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(Applicati > onFilterChain.java:193) > at > ru.park.web.util.SetCharacterEncodingFilter.doFilter(SetCharacterE > ncodingFilter.java:147) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(A > pplicationFilterChain.java:213) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(Applicati > onFilterChain.java:193) > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapp > erValve.java:243) > at > org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipel > ine.java:566) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline. > java:472) > at > org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) > at > org.apache.catalina.core.StandardContextValve.invoke(StandardConte > xtValve.java:190) > at > org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipel > ine.java:566) > at > org.apache.catalina.valves.CertificatesValve.invoke(CertificatesVa > lve.java:246) > at > org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipel > ine.java:564) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline. > java:472) > at > org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) > at > org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2347) > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValv > e.java:180) > at > org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipel > ine.java:566) > at > org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispat > cherValve.java:170) > at > org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipel > ine.java:564) > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValv > e.java:170) > at > org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipel > ine.java:564) > at > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:468) > at > org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipel > ine.java:564) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline. > java:472) > at > org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngine > Valve.java:174) > at > org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipel > ine.java:566) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline. > java:472) > at > org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) > at > org.apache.catalina.connector.http.HttpProcessor.process(HttpProce > ssor.java:1027) > at > org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor > .java:1125) > at java.lang.Thread.run(Thread.java:536) > > *root cause* > > java.lang.ArrayIndexOutOfBoundsException > at java.lang.reflect.Array.get(Native Method) > at > org.apache.struts.action.DynaActionForm.get(DynaActionForm.java:296) > at > org.apache.commons.beanutils.PropertyUtils.getIndexedProperty(Prop > ertyUtils.java:474) > at > org.apache.commons.beanutils.PropertyUtils.getIndexedProperty(Prop > ertyUtils.java:428) > at > org.apache.commons.beanutils.PropertyUtils.getNestedProperty(Prope > rtyUtils.java:770) > at > org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUti > ls.java:801) > at > org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java:881) > at > org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:808) > at > org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1096) > at > org.apache.struts.action.RequestProcessor.processPopulate(RequestP > rocessor.java:816) > at > org.apache.struts.action.RequestProcessor.process(RequestProcessor > .java:254) > at > org.apache.struts.action.ActionServlet.process(ActionServlet.java:1420) > at > org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:520) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:760) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(A > pplicationFilterChain.java:247) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(Applicati > onFilterChain.java:193) > at > ru.park.web.util.SetCharacterEncodingFilter.doFilter(SetCharacterE > ncodingFilter.java:147) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(A > pplicationFilterChain.java:213) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(Applicati > onFilterChain.java:193) > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapp > erValve.java:243) > at > org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipel > ine.java:566) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline. > java:472) > at > org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) > at > org.apache.catalina.core.StandardContextValve.invoke(StandardConte > xtValve.java:190) > at > org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipel > ine.java:566) > at > org.apache.catalina.valves.CertificatesValve.invoke(CertificatesVa > lve.java:246) > at > org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipel > ine.java:564) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline. > java:472) > at > org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) > at > org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2347) > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValv > e.java:180) > at > org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipel > ine.java:566) > at > org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispat > cherValve.java:170) > at > org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipel > ine.java:564) > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValv > e.java:170) > at > org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipel > ine.java:564) > at > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:468) > at > org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipel > ine.java:564) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline. > java:472) > at > org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngine > Valve.java:174) > at > org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipel > ine.java:566) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline. > java:472) > at > org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) > at > org.apache.catalina.connector.http.HttpProcessor.process(HttpProce > ssor.java:1027) > at > org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor > .java:1125) > at java.lang.Thread.run(Thread.java:536) > > ---------------------------------------------------- > > > What Im I doing wrong?? Is there a trouble in configuration or I should > implement some more classes? > > Thanks! > > -- > Best regards, > > Alexey N. Shananin (mailto:[EMAIL PROTECTED]) > Java Developer, PARK.RU (http://www.park.ru) > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]

