Hi all. I am trying to have a dynamically sized forming using indexed properties. I am using the following article: http://www.developer.com/java/ejb/article.php/2233591 as a guide, and have almost got it. The form appears to get properly generated, and each element is listed as taxRates[3].ID, etc. I am putting the form bean into the session scope (I think) as the article states, but when I submit, I get an error: javax.servlet.ServletException: BeanUtils.populate, root cause: java.lang.ArrayIndexOutOfBoundsException at java.lang.reflect.Array.get(Native Method) (a full stack trace is at the bottom of the message).
As far as I can tell, this happens before any code in my action is being processed. (The first line of the action is to print "hello" to the log, and that never even happens) I am using The struts nightly build from 11/19/03 to make sure it isn't a bug or something like that, because what I am seeing here is very similar to bugzilla report #23465 Here are relevant code snippets: The form bean: <form-bean name="advancedTaxRatesCurrentForm" type="org.apache.struts.action.DynaActionForm"> <form-property name="taxRates" type="com.ntso.rsg.bus.tax.TaxRateBean[]" /> </form-bean> The action mapping: <action path="/admin/taxRatesUpdateAction" type="com.ntso.rsg.admin.view.settings.TaxRateAction" scope="session" name="advancedTaxRatesCurrentForm"> <forward name="success" path=".view.admin.advancedTaxRates" redirect="true"/> <forward name="failure" path=".view.admin.errorPage" redirect="true"/> </action> The preloader: request.setAttribute("taxRates", allTaxRates); // where allTaxRates is a TaxRateBean[] The jsp form: <html:form action="admin/taxRatesUpdateAction"> <logic:iterate id="taxRates" name="taxRates" indexId="ctr" > <html:checkbox indexed="true" name="taxRates" property="delete" /> <html:hidden indexed="true" name="taxRates" property="ID" /> <html:text indexed="true" name="taxRates" property="ratePercent" style="width: 50px; text-align: right;"/> </logic:iterate> <html:submit value="Update"/> </html:form> For the action, I have tried three different things: Try 1: (DynaActionForm) myForm = (DynaActionForm) form; Try 2: (DynaActionForm) myForm = (DynaActionForm) session.getAttribute("advancedTaxRatesCurrentForm"); Try 3: TaxRateBean[] myForm = (TaxRateBean[]) session.getAttribute("advancedTaxRatesCurrentForm"); All three things yield the same error, and as stated above, the error occurs before any of my code in the action. The action itself is extending org.apache.struts.action.Action; and is just a standard execute method. Searching on the web and in the archives has yielded some people with similar problems, but so far I have not been able to find a solution that works. Just for reference, the platform for this is: Windows XP Pro Tomcat 4.1.24 Struts Nightly Build 11/19/03 Java 1.4.2 Any help about what I'm doing wrong would be greatly appreciated!! As stated, the full error stack trace is attached below. Thanks, Matt Bathje Stack trace of error: javax.servlet.ServletException: BeanUtils.populate at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:844) at org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.j ava:823) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:243) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1176) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:472) at com.ntso.rsg.RsgStrutsServlet.doPost(RsgStrutsServlet.java:52) 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(Application FilterChain.java:247) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh ain.java:193) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja va:256) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok eNext(StandardPipeline.java:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja va:191) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok eNext(StandardPipeline.java:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180 ) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok eNext(StandardPipeline.java:643) at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve. java:171) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok eNext(StandardPipeline.java:641) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172 ) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok eNext(StandardPipeline.java:641) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java :174) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok eNext(StandardPipeline.java:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:594) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConne ction(Http11Protocol.java:392) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.jav a:619) at java.lang.Thread.run(Thread.java:534) root cause java.lang.ArrayIndexOutOfBoundsException at java.lang.reflect.Array.get(Native Method) at org.apache.struts.action.DynaActionForm.get(DynaActionForm.java:295) at org.apache.commons.beanutils.PropertyUtilsBean.getIndexedProperty(PropertyUt ilsBean.java:431) at org.apache.commons.beanutils.PropertyUtilsBean.getIndexedProperty(PropertyUt ilsBean.java:385) at org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUti lsBean.java:727) at org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean .java:758) at org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:92 5) at org.apache.commons.beanutils.BeanUtilsBean.populate(BeanUtilsBean.java:852) at org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:343) at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:842) at org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.j ava:823) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:243) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1176) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:472) at com.ntso.rsg.RsgStrutsServlet.doPost(RsgStrutsServlet.java:52) 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(Application FilterChain.java:247) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh ain.java:193) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja va:256) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok eNext(StandardPipeline.java:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja va:191) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok eNext(StandardPipeline.java:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180 ) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok eNext(StandardPipeline.java:643) at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve. java:171) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok eNext(StandardPipeline.java:641) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172 ) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok eNext(StandardPipeline.java:641) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java :174) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok eNext(StandardPipeline.java:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:594) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConne ction(Http11Protocol.java:392) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.jav a:619) at java.lang.Thread.run(Thread.java:534) --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]