The better way is just what was mentioned.... set your values to null (false?) in the reset method. But if you are using Struts 1.0 and not a more recent build, also setting them in the constructor or initial values when defined is a good idea to default them in the case you are navigating directly to the JSP page rather than going through a Struts action to get to the JSP page.
So more succintly, initialize values in reset and that should fix the issue you described. Did you try that? Erik ----- Original Message ----- From: "Krueger, Jeff" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Tuesday, October 02, 2001 7:49 AM Subject: RE: multibox and reset() "ERIK" > Thanks Erik for the extra info. I was thinking that was the problem I was > having. One idea that I had was to check in my action class to see if any > check boxes were on the request and if not then call the set method myself > setting it to null. Does anyone know of a better way to do this. > > Thanks > > Jeff > > > -----Original Message----- > From: Erik Hatcher [mailto:[EMAIL PROTECTED]] > Sent: Tuesday, October 02, 2001 8:49 AM > To: [EMAIL PROTECTED] > Subject: Re: multibox and reset() "ERIK" > > > Jeff, > > No, my patch did not fix this particular case. Here is what is happening > in your scenario: checkboxes do not submit a value if they are unchecked, > therefore Struts has no way of knowing of their existence on the original > HTML form and thus does not call any setters. The reset method is where you > implement setting all your checkboxes (and likely other HTML field types) to > their default (false, in your case) value. > > My patch was for the case where the ActionForm bean was created by a JSP > page rather than ActionServlet, and reset was not called at that point. In > your case, the ActionForm bean is being created (in the last request you > speak of) by ActionServlet, so reset should be called - this is all assuming > you are going through a Struts action for that request. > > My patch has been committed to Struts CVS, so its available in the nightly > builds (I presume, unless those builds are running on a different branch or > something). > > Erik > > ----- Original Message ----- > From: "Krueger, Jeff" <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Sent: Tuesday, October 02, 2001 7:07 AM > Subject: RE: multibox and reset() "ERIK" > > > > Erik, > > > > I believe your patch will solve my problem but I'm not sure. I have > > a page with many multibox tags on it. When I select several of them my > form > > bean is correctly populated with a string array. If I come back to the > page > > all the correct boxes are checked. If I remove all the checks and click > > submit then my string array is left to what it was before. I assume this > is > > because there is no mutliboxes being submitted to the server, therefore > the > > setMethod is never getting called. Is that what you patch fixed, if so do > > you know the status of that making it into a build? > > > > Thanks > > > > Jeff > > > > > > -----Original Message----- > > From: Erik Hatcher [mailto:[EMAIL PROTECTED]] > > Sent: Friday, September 14, 2001 8:24 PM > > To: [EMAIL PROTECTED] > > Subject: Re: multibox and reset() > > > > > > reset is currently not called if <html:form> creates the form bean, which > > happens if you go to the JSP page directly without hitting ActionServlet > > first. > > > > I've submitted a patch to fix this, but it has not been committed yet. > > > > Erik > > > > > > ----- Original Message ----- > > From: "Renaud Waldura" <[EMAIL PROTECTED]> > > To: <[EMAIL PROTECTED]> > > Cc: <[EMAIL PROTECTED]> > > Sent: Friday, September 14, 2001 10:12 AM > > Subject: Re: multibox and reset() > > > > > > > The signature for reset() is the following: > > > > > > void reset(ActionMapping, HttpServletRequest) > > > > > > I don't know whether setting the array reference is null is enough, or > you > > > truly need to create a zero-length array like in your example below. > > > > > > I set mine to null, it seemed to work. > > > > > > > > > > > > > > > ----- Original Message ----- > > > From: "Dirk Jaeckel" <[EMAIL PROTECTED]> > > > To: <[EMAIL PROTECTED]> > > > Sent: Friday, September 14, 2001 6:26 AM > > > Subject: multibox and reset() > > > > > > > > > > Hi! > > > > > > > > > > > > I am having trouble resetting a StringArray that is connected to a > > > <html:multibox>-tag. > > > > > > > > HTML-Example: > > > > > > > > <html:form action="/map" method="GET"> > > > > <html:multibox value="parking" property="layer"/> > > > > <html:multibox value="petrol" property="layer"/> > > > > > > > > <html:image property="layers" page="/img/update.gif"/> > > > > > > > > </html:form> > > > > > > > > > > > > Corresponding ActionForm: > > > > > > > > public class MapForm extends ActionForm { > > > > > > > > private String[] _on = new String[0]; > > > > > > > > public void reset() { > > > > _on = new String[0]; > > > > } > > > > > > > > public void setLayer(String in) { > > > > _on = in; > > > > } > > > > > > > > public String[] getLayer() { > > > > return _on; > > > > > > > > } > > > > } > > > > > > > > The Manual told me to use the reset()-method to set The Array to the > > > length 0, but reset() is never called. > > > > > > > > > > > > Dirk > > > > > > > > > > > > > > > > >