On 10/19/06, Adam K <[EMAIL PROTECTED]> wrote:
Here are the 2 get methods that I have. thanks again for all the help. public int getNumProducts() { return numProducts; } public int getNumProducts(int index) { if(this.results== null) { this.results = new ArrayList(); } while(index >= this.results.size()) { this.results.add(new Product()); } Product p = (Product) results.get(index); return p.getNumProducts(); }
Sorry i actually meant post your getter and setter methods..coz the setNumProducts is what is probaly causing the problem..and ya post the full exception trace. On 10/19/06, Puneet Lakhina <[EMAIL PROTECTED]> wrote:
> > On 10/19/06, Adam K <[EMAIL PROTECTED]> wrote: > > > > Hi all I have been working on this probelm for the past couple of days, > > and > > don't seem to be making any progress on it. I am fairly certain it is a > > problem with my understanding of struts, and as such it makes it quite > > difficult for me to solve the problem myself. > > I am trying to use a textfield and pull values from it. The following > > explains the scenario. User clicks on a page, page loads with a form > that > > has a textfield. User enters search criteria and submits form. This > > works > > fine. Page returns with the search form and textfield, as well as a > > second > > form that displays the results of the search. This also works > fine. The > > user then goes through the results filling in numbers for each result > > indicating how many of each they would like to order and then submit the > > form. This is where the problem results. I end up gettting an error > from > > the page anytime I submit the form where there is 1 or more results. > > Submitting with no results works fine and the page loads correctly. > > Submitting with 1 result errors out with > > > > java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 > > > > Submitting with 10 results errors out with: > > java.lang.IndexOutOfBoundsException: Index: 2, Size: 0 > > > > Submitting with 100 results errors with : > > java.lang.IndexOutOfBoundsException: Index: 6, Size: 0 > > > > Submitting with 200 results errors with : > > java.lang.IndexOutOfBoundsException: Index: 155, Size: 0 > > > > The number seems to be random (I am guessing it is how far into the > > form it gets before the error is encountered) > > > > Any help on this would be much appreciated. > > I am including all the information that I believe to be important but > > would have no problem including more. > > > > In the jsp form there is: > > > > <html:form action="/skuSearch" method="post" > > > <center> > > <table width="400" border="1" align="center" > > cellpadding="0" cellspacing="0"> > > <tr> > > <td> > > <table border="0" > cellspacing="1" > > cellpadding="1" width="100%" > > > <tr align="center"> > > <td><html:text > > property="searchString" size="30" > > maxlength="30"/></td> > > > > > <td><html:submit>Search</html:submit></td> > > </tr> > > <tr><td > colspan="2"></td></tr> > > </table> > > </td> > > </tr> > > </table> > > </center> > > </html:form> > > > > > > <html:form action="/searchResults" method="post" > > > <center><p><html:submit>Add To Order</html:submit></p></center> > > <table align ="center" width="90%" border=1> > > <tr> > > <td> Product </td> > > <td> Product Desc </td> > > <td> Quantity </td> > > </tr> > > > > <logic:notEmpty name="SkuSearchForm" property="results"> > > <logic:iterate name="SkuSearchForm" property="results" > > id="results"> > > <tr> > > <td> <bean:write name="results" property="product" > > /> </td> > > <td> <bean:write name="results" > property="description" > > /> </td> > > <td> <html:text name="results" property="numProducts" > > indexed="true" /> > > > post the getter method for the numProducts. that might be causing the > problem. > > </td> > > </tr> > > </logic:iterate> > > </logic:notEmpty> > > > > <logic:empty name="SkuSearchForm" property="results"> > > <tr><td colspan="3" align="center">NO RESULTS</td></tr> > > </logic:empty> > > </table> > > </html:form> > > > > In the action (this action is only for the search results): > > public ActionForward execute(ActionMapping mapping, ActionForm > > form, > > HttpServletRequest request, HttpServletResponse response) throws > > Exception > > { > > SkuSearchForm skuform = (SkuSearchForm) form; > > HttpSession session = request.getSession(); > > User user = new User(); > > Order order = new Order(); > > ArrayList products = new ArrayList(); > > > > ArrayList results = new ArrayList(); > > user = (User)session.getAttribute("User"); > > order = user.getOrder(user.getCurrOrder()); > > products = order.getProducts(); > > int number = 0; > > int count = 0; > > > > Iterator iter = results.iterator(); > > //there is nothing happening in here as there is no results for some > > reason. > > while(iter.hasNext()) > > { > > Product p = (Product) iter.next(); > > if(p.getNumProducts() != 0 ) > > { > > products.add(p); > > } > > > > count++; > > } > > { > > count = 1; > > Product p = new Product("TestProd " + > > count, "TestDesc"+count + " > > " +count, 10, new BigDecimal("101.0")); > > products.add(p); > > results.add(p); > > count++; > > } > > > > order.setProducts(products); > > order.setOrderId("ID12"); > > user.changeOrder(order, "ID12"); > > skuform.setResults(results); > > > > return mapping.findForward("success"); > > } > > > > In the form (The methods I thought were appropriate): > > > > public void setResults(ArrayList results) > > { > > this.results=results; > > } > > > > public ArrayList getResults() > > { > > return this.results; > > } > > > > public Product getResult(int index) > > { > > if(this.results == null) > > { > > this.results = new ArrayList(); > > } > > while(index>= this.results.size()) > > { > > this.results.add(new Product()); > > } > > > > return (Product)results.get(index); > > } > > > > > > > > Thanks so much in advance for your time on this matter. > > > > Adam > > > > > > > -- > Puneet > >
-- Puneet