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]

Reply via email to