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