I think I have found the problem - or at least a potential cause. Would it be correct in stating that this will not work using ActionForm (what I was using) and that I must instead use DynaActionForm ?
Thanks for the time thus far. On 11/17/06, Hubert Rabago <[EMAIL PROTECTED]> wrote:
Adam, Try adding a getResultsPage() that doesn't take params and always returns a valid collection. (Throw in the setResultsPage() that accepts a collection as well.) Hubert On 11/17/06, Adam K <[EMAIL PROTECTED]> wrote: > This has been driving me nuts for the past little bit. > I have a page that is populated using indexed properties. The prepopulation > works fine, and I get the results as I would expect them, but trying to > submit the form I get an index out of bounds exception. I know that it is > being caused because the page doesn't have the arrayList to use in the > indexed properties. I guess my question boils down to using indexed > properties properly. I will start by putting in an explanation of what I > have and what I am trying to do: > > The following is what I am working with : > JSP: > > <logic:notEmpty name="ProdSelectionForm" property="results"> > <logic:iterate name="ProdSelectionForm" property="results" > id="ResultsPage"> > <tr> > <td> <bean:write name="ResultsPage" property="description" > /> </td> > <td > <html:text name="ResultsPage" property="numProducts" > indexed="true" /> </td> > </tr> > </logic:iterate> > </logic:notEmpty> > > What I am trying to achieve is that a user clicks on a link, they are sent > to page, and all of the values are prepopulated. The page is then displayed > and the user has the option to modify any of the variables that they want to > before resubmitting the page. (When they resubmit the form has a url > parameter attached to it). What is happening (or at least what I believe is > happening is the following: link is clicked, reset is called action sets > the variables, page is displayed, user can modify the page and resubmit, > reset is called on the form, the action is called (this is where it dies as > there is no longer an ArrayList) to modify. My question is am I going about > this in a manner that seems sensible or am I way off base ? I have the > values being prepopulated, but when trying to use the values that the user > puts in I can't use them in the action, nor can I pull the values from the > form without again setting the values in the form. I am hoping it is that > I have over looked something, but it's possible that I don't understand > something as well. > > Here is the Action code (This is the entire execute method) : > HttpSession session = request.getSession(); > ProdSelectionForm prodSelection = (ProdSelectionForm) form; > User user ; > user = (User)session.getAttribute("User"); > Order order = new Order(); > ArrayList products = new ArrayList(); > ArrayList pageRes = new ArrayList(); > ArrayList results = new ArrayList(); > > String action = (request.getParameter("Dest") == null ? "populate" : > request.getParameter("Dest") ); > > order = user.getCurrOrder(user); > > if(action.equals("populate")) > { > prodSelection.setResults(order.getProducts()); > } > > if(action.equals("Delete")) > { > ArrayList p = new ArrayList(); > p = prodSelection.getResults(); > > int count = 0; > while (count < p.size()) > { > Product t = (Product) p.get(count); > t.setDescription("" +t.getNumProducts() +">" +pageRes.size() > +"<"); > p.set(count, t); > count++; > } > > t.setDescription("" +t.getNumProducts() +">" +p.size() +"<"); > p.set(0, t); > > user.setOrder(p , user); > prodSelection.setResults(p); > prodSelection.setTest(prodSelection.getTest()+" + " + p.size ()); > > return mapping.findForward("success"); > } > return mapping.findForward("success"); > > > > > Form code: (In the form code is an ArrayList called results. This arraylist > contains a bunch of Product ) > > public Product getResultsPage(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); > } > > public void setResultsPage(int index, Product p) > { > if(this.results == null) > { > this.results = new ArrayList(); > } > > while(index >= this.results.size()) > { > this.results.add(new Product()); > } > results.set(index, p); > //return (Product) results.get(index); > } > > public void setResults(ArrayList results) > { > this.results=results; > } > > public ArrayList getResults() > { > return this.results; > } > > > > Products is an object that stores various things about a product with > numProducts, and description being two of those things. > Within Products is both getter and setter methods for the numProducts as > well as description. > > > > Thanks so much for any help you may be able to provide. > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]