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]