Lots of people have done it. Search the archives [1]. Search for
"indexed" and "lazyList". I've done it with both ActionForm and
DynaActionForm.
Hubert
[1] http://struts.apache.org/mail.html
On 11/17/06, Adam K <[EMAIL PROTECTED]> wrote:
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]
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]