This issue applies to all form field tags, not just checkboxes.

Modifying struts tags is currently a pain, but I just subimitted a bugzilla
enhancement to re-factor the tags so that they are more granualar and make
it easier to override descrete bits such as generating the name attribute.
In principle the enhacement has been accepted and I hope to submit a patch
in the next few days. If it is accepted I will have a set of custom versions
of these tags for this behviour very soon and you won't have to "start
hacking around with the code every time a new version comes out" and anyone
will be welcome to them.

Addtionally this issue is all on the "ToDo" list for 1.1 and I'm sure it
will be sorted then.

I think struts is excellent, and I love open source because you can always
look inside to see what they've done. Of course it doesn't do everything yet
;-) but I can't see it getting anything but better. We have done quite a bit
of work customizing the ActionServlet and the way its been built is
excellent, making it really easy to add addtional behaviour (hopefully)
without having to hack around every time a new version comes out.

Niall

> -----Original Message-----
> From: Tony Karas [mailto:[EMAIL PROTECTED]]
> Sent: 10 May 2001 10:34
> To: [EMAIL PROTECTED]
> Subject: RE: Posting Collections
>
>
> Many thanks Niall, that clears things up for me.  Do you know if
> there is a
> reason why this is the behaviour for checkboxes?  Is this just with
> checkboxes or other tags as well?
>
> I don't really like the idea of modifying the struts code - the
> whole point
> of deciding to use it is for code reuse - I don't want to start hacking
> around with the code every time a new version comes out.
>
> Do you have an opinion on using Struts?  I've been using it for a
> couple of
> weeks now and have been struggling because of basic lack of
> information.  I
> get most of my training from this news group!  I'm wondering whether I
> should just jack it in and use something else.
>
> Cheers
> Tony
>
>
> >From: "Niall Pemberton" <[EMAIL PROTECTED]>
> >Reply-To: [EMAIL PROTECTED]
> >To: <[EMAIL PROTECTED]>
> >Subject: RE: Posting Collections
> >Date: Wed, 9 May 2001 20:51:00 +0100
> >
> >The problem is the CheckBox tag currently sets the HTML name attribute to
> >the property, so your JSP will produced something like this:
> >
> >         <input type="checkbox" name="delete">
> >
> >So all the checkbox fields will have the same name.
> >
> >In order for Struts to populate your Retailer bean with the delete values
> >you need the generated HTML to look like this:
> >
> >         <input type="checkbox" name="retailer[0].delete">
> >         <input type="checkbox" name="retailer[1].delete"> etc etc.
> >
> >Struts would then use getRetailer(0).setDelete(boolean) to set the delete
> >attributes correctly.
> >
> >Unfortunately there is no easy solution - many people resort to
> scriptlets
> >to generate the name properly and there are quite a few messages in the
> >archive about this.
> >
> >I created my own versions of Struts tags and changed them to generate the
> >name correctly - I like that much better - no java in the view.
> >
> >Niall
> >
> > > -----Original Message-----
> > > From: Tony Karas [mailto:[EMAIL PROTECTED]]
> > > Sent: 09 May 2001 17:50
> > > To: [EMAIL PROTECTED]
> > > Subject: Posting Collections
> > >
> > >
> > > Briefly, this is what I am trying to achieve:
> > >
> > > - Retrieve a list of items from a database
> > > - Display each item with a corresponding checkbox
> > > - Display a "Delete" button - which when pressed deletes all
> > > checked items.
> > >
> > > Unfortunately, although I have managed to display the items correctly
> >and
> > > set the checkbox value using boolean values, when I do the form
> > > submit - my
> > > ActionForm properties do not get filled in.
> > >
> > > This is the code I have:
> > >
> > > My ActionForm looks like this:
> > >
> > > public class RetailerForm extends ActionForm
> > > {
> > >     protected Vector retailer;
> > >
> > >     /*
> > >      * On construction, fill the form with all the retailers
> > >      */
> > >     public RetailerForm() throws SQLException
> > >     {
> > >          //here i have some code to generate my vector
> > >          //which is comprised of "Retailer" beans.
> > >     }
> > >
> > >     public Retailer getRetailer( int index )
> > >     {
> > >         return (Retailer)retailer.elementAt( index );
> > >     }
> > >
> > >     public Vector getRetailer()
> > >     {
> > >         return retailer;
> > >     }
> > >
> > >     public void setRetailer( Vector value )
> > >     {
> > >         retailer = value;
> > >     }
> > > }
> > >
> > > My "Retailer" bean has get and set elements for properties called
> > > "delete"
> > > and "name".
> > >
> > > My struts code looks like this (obviously within <html:form> tags):
> > >
> > > <logic:iterate id="retailer" name="retailerForm" property="retailer">
> > >   <tr>
> > >   <td><html:checkbox name="retailer" property="delete"/></td>
> > >   <td><bean:write name="retailer" property="name"/></td>
> > >   </tr>
> > > </logic:iterate>
> > >
> > > And this all works ok for displaying the data.  However, when I do the
> > > submit my "delete" property for each bean is not set and I have added
> > > debugging code to the "set" method and this is not called by
> struts.  I
> > > don't get error messages - it just doesn't happen.
> > >
> > > I know other people have had this problem, but I am
> struggling to find a
> > > solution.
> > >
> > > Can anyone help me?  Is there a better way of achieving what I am
> > > trying to
> > > achieve?  If I am doing the correct thing, what's the reason it's not
> > > working.
> > >
> > > All help appreciated.
> > >
> > > Cheers
> > > Tony
> > >
> >_________________________________________________________________________
> > > Get Your Private, Free E-mail from MSN Hotmail at
> >http://www.hotmail.com.
> > >
> > >
> >
>
> _________________________________________________________________________
> Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.
>
>

Reply via email to