JSP Page : <table width="30%" border="0"> <colgroup> <COL width="5"> <COL width="30"> <COL width="30"> <COL width="35"> </colgroup>
<logic:iterate id="customer" name="listTextForm" property="customer"> <tr> <td><html:checkbox name="customer" property="id" value="yes"/></td> <td><html:text name="customer" property="firstName" indexed="true"/></td> <td><html:text name="customer" property="lastName" indexed="true"/></td> <td><html:text name="customer" property="address" indexed="true"/></td> </tr> </logic:iterate> <tr> <td><input type="checkbox" name="id" value="yes"></td> <td><input type="text" name="customer[4].firstName" value="John"></td> <td><input type="text" name="customer[4].lastName" value="Mark"></td> <td><input type="text" name="customer[4].address" value="New York"></td> </tr> </table> row is hardcoded (with index) on JSP page for simplicity. Now, on submit it give me this error.. javax.servlet.ServletException: BeanUtils.populate org.apache.struts.util.RequestUtils.populate(RequestUtils.java:495) org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:804) org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:203) 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) *root cause* java.lang.ArrayIndexOutOfBoundsException java.lang.reflect.Array.get(Native Method) org.apache.struts.action.DynaActionForm.get(DynaActionForm.java:250) org.apache.commons.beanutils.PropertyUtilsBean.getIndexedProperty(PropertyUtilsBean.java:386) org.apache.commons.beanutils.PropertyUtilsBean.getIndexedProperty(PropertyUtilsBean.java:340) org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:684) org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:715) org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:884) 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.apache.struts.action.RequestProcessor.process(RequestProcessor.java:203) 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) Genetared HTML Code <form name="listTextForm" method="post" action="/GenerateHTMLTable/listtext.do"> <input type="submit" value="Submit"> <br> <table width="30%" border="0"> <colgroup> <COL width="5"> <COL width="30"> <COL width="30"> <COL width="35"> </colgroup> <tr> <td><input type="checkbox" name="id" value="yes"></td> <td><input type="text" name="customer[0].firstName" value="Irfan"></td> <td><input type="text" name="customer[0].lastName" value="Shaikh"></td> <td><input type="text" name="customer[0].address" value="New Mumbai"></td> </tr> <tr> <td><input type="checkbox" name="id" value="yes"></td> <td><input type="text" name="customer[1].firstName" value="Maruf1212"></td> <td><input type="text" name="customer[1].lastName" value="Dolani"></td> <td><input type="text" name="customer[1].address" value="Mumbai"></td> </tr> <tr> <td><input type="checkbox" name="id" value="yes"></td> <td><input type="text" name="customer[2].firstName" value="Azima121111"></td> <td><input type="text" name="customer[2].lastName" value="Kacchi"></td> <td><input type="text" name="customer[2].address" value="Pune"></td> </tr> <tr> <td><input type="checkbox" name="id" value="yes"></td> <td><input type="text" name="customer[3].firstName" value="Ruhi11133"></td> <td><input type="text" name="customer[3].lastName" value="Khan"></td> <td><input type="text" name="customer[3].address" value="Pune"></td> </tr> <tr> <td><input type="checkbox" name="id" value="yes"></td> <td><input type="text" name="customer[4].firstName" value="John"></td> <td><input type="text" name="customer[4].lastName" value="Mark"></td> <td><input type="text" name="customer[4].address" value="New York"></td> </tr> <!--This is the HTML of hardcoded row--> </table> </form> Thanks, waiting for reply. On 12/19/05, atta-ur rehman <[EMAIL PROTECTED]> wrote: > > Irfan, > > By looking at the HTML source of the your page, please show me the name of > textboxes added thru <logic:iterate> and name of the textboxes you've > added > thru Javascript. > > ATTA > > > On 12/17/05, Irfan Shaikh <[EMAIL PROTECTED]> wrote: > > > > I am storing data objects into an Array for initial rows and when user > > submit the form i am getting the updated values by using the code > > highlighted below > > > > public ActionForward execute(ActionMapping mapping, > > ActionForm form, > > HttpServletRequest request, > > HttpServletResponse response){ > > > > DynaActionForm f = (DynaActionForm) form; > > Customer[] s = (Customer[])f.get("customer"); > > > > System.out.println("Number of Rows on page :" + s.length); > > > > > > if (s.length!=0) { > > insertAllCustomer(s); > > f.set("customer", s); > > } else { > > Customer[] custArray = getAllCustomer(); > > f.set("customer", custArray); > > } > > > > return (mapping.findForward("OK")); > > } > > > > the problem here is when i populate the data on page for the first > time > > i > > have 4 rows and then i add a new row by javascript, and i submit the > page, > > even then i get only 4 rows in execute method whereas i should get 5 > rows > > so > > that i can get the new added row data to create a new Customer bean and > > put > > it back to Customer[] array (this is my collection) > > > > Here is the loop for rows genration on JSP page : > > > > <logic:iterate id="customer" name="listTextForm" property="customer"> > > <tr> > > <td><html:checkbox name="customer" property="id" > value="yes"/></td> > > <td><html:text name="customer" property="firstName" /></td> > > <td><html:text name="customer" property="lastName" /></td> > > <td><html:text name="customer" property="address" /></td> > > </tr> > > </logic:iterate> > > > > > > > > Is there something i am missing here ?... Waiting for a reply > desperately > > Thanks a lot. > > > > On 12/17/05, atta-ur rehman <[EMAIL PROTECTED]> wrote: > > > > > > Irfan, > > > > > > How are you storing data required for initial rows? As a collection of > > > objects in some scope that <logic:iterate> uses to paint them on the > > page? > > > > > > When user submits the page how are you getting the updated values? > > > Populating the objects in the same collection or constructing a new > > > collection and adding a object for each row? > > > > > > If that's the case, then all you need to do is reset the collection of > > > objects to the new number of rows submitted by the user. > > > Commons-Collection, > > > which is required by Sturts(?) have a lazy-list which could be used > for > > > this > > > purpose. > > > > > > ATTA > > > > > > > > > On 12/16/05, Irfan Shaikh <[EMAIL PROTECTED]> wrote: > > > > > > > > Hi All, > > > > I am new to Struts and need to implement a functionality > > where > > > a > > > > new row is added to table (generated using logic:iterate tag on JSP > > page > > > ) > > > > on the fly(using javascript) and handling newly added row in > > > > DynaActionForm > > > > so that row gets saved to database. Need to know how to create a > bean > > > for > > > > newly added row. > > > > > > > > Suggestion will be highly appreciated. > > > > Thanks in advance > > > > > > > > > > > > > > > > > > > >