I just implemented myself, so let me throw a shot at this.
In my case, I make my action derived from LookupDispatchAction
which can handle multiple button submission handlers.
One of the button is called something like "addRow". When you hit this
addRow button, struts will repopolate what ever on your screen and dispatch
it
to your "addRow" handler where you can add new empty row to your collection
and forward back to your screen.
regarding your out of index problem, I would suggest to use common
Collection
ListUtils.lazyList. Here is an example a lazy collection in a my form
private List gradeViews = ListUtils.lazyList(new ArrayList(), new
GenericFactory("org.glvnsjc.view.StudentGradeView"));
//there is no direct setXXX, call getXXX first and populate the object
// lazy list takes care all dynamic allocation
public StudentGradeView getGradeView(int index) {return
(StudentGradeView) gradeViews.get(index); }
public void removeAllGradeView() { this.gradeViews.clear(); }
public List getGradeViews() { return this.gradeViews;}
Please look up GenericFactory in the maling list, I dont want to repost it
If you dont know LookupDispatchAction yet, learn it. It has the magic that
I cant live without
Good luck!!!
-Dan
----- Original Message -----
From: "Rob" <[EMAIL PROTECTED]>
To: "Struts Users Mailing List" <[EMAIL PROTECTED]>
Sent: Saturday, June 07, 2003 8:55 AM
Subject: Re: adding / creating new collection elements in a form
> Perhaps I was not making myself clear when I first posted this.
>
> I know how to write the javascript, I know how to use struts
> nested/logic tags. What I was looking for when I posted was
> a solution whereby I could add new elements to a collection
> in a form. Not update existing elements, thus increasing the
> size of a collection based on properties from fields that
> were added by client side scripting.
>
>
>
> > I've not been able to find a solution to this within the mailing
> > list. But I would like to the following.
> >
> > I have a page with a collection of fields which are populated by
> > a form (via it's collection). I also have a button which would
> > allow the addition of a new row. (hopefully)
> >
> > Name Descrip
> > [ xy ][ foo ]
> > [ ab ][ bar ]
> >
> > Add
> >
> > (1) I would like to have the add button add a new pair of text
> > input fields each time it is clicked. (2) I would like it if
> > clicking add did not make a request to the server this being the
> > case it suggests some kind of client side javascript adding the
> > new fields.
> >
> > The problems of course with this are the following.
> >
> > (1) client side code won't be able to utilise the struts tags
> > and as such I won't know what values to set the appropriate
> > input text element attributes to.
> > (2) It is highly likely that even if I solved problem (1) that
> > it would result in a IndexOutOfBounds exception, or just not
> > bother with the properties from the new fields.
> >
> > Has anyone else solved this? Does struts have a mechanism for
> > dealing with this? I'm fully aware of nested/logic tags but
> > if they are the way I can't see how.
> >
> > Suggestions would be appreciated, Thanks!
> >
> > Rob
> >
> >
> > ---------------------------------------------------------------------
> > 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]
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]