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

Reply via email to