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();
   }

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


Reply via email to