No exception if you replace your ArrayList by a String[] (for the properties used by the select tag).
Vincent Berruchon wrote: > I get a "BeanUtils.populate() exception" when a form with a multiple > select is posted (with struts 1.0.2, Martin reported this Bug a few days > ago - bugzilla bug id #: 13075) : > "javax.servlet.ServletException: BeanUtils.populate > at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:774) > ..." > > I don't know if it can have a link, but I'm not sure to understand this > warning about the "select" tag ( in > webapps/struts-documentation/struts-html.html#select): > - > WARNING: In order to correctly recognize cases where no selection at all > is made, the ActionForm bean associated with this form must include a > statement resetting the scalar property to a default value (if multiple > is not set), or the array property to zero length (if multiple is set) > in the reset() method. > - > > So in my formBean, in the reset() method I've put: > " this.selectedValues = new ArrayList(); " > instead of > "this.selectedValues = null; " > > But I'm not sure it really respect the warning?? > What mean "a zero length ArrayList": > not null I suppose... > should I use the other constructor : "new ArrayList(0)" ? > > This is the first point. > But in fact, all that got no influence on this populate exception with > multiple select. > Is there another way to do with a "multiple select"? > > Thanks > Vincent > > Martin Grebac wrote: > >> Hi, >> so here is the Bugid: >> >> >> 13075 >> >> . May I expect something's gonna happen with it, or will it die in the >> deeps of the bug database ;O)) >> >> Martin >> >> >> Martin Grebac wrote: >> >>> Yes, I built everything anew, and also restarted server. I forgot to >>> mention I'm using Struts 1.0.2 (but I think it's not relevant). Since >>> Mohan has almost the same problem and everything we are using seems >>> to be OK for you, and also according to the documentation it should >>> work, I assume this is a bug. I'm gonna enter it into bugzilla, but >>> it's rather serious for me, because I don't have any workaround for >>> that. >>> Martin >>> >>> [EMAIL PROTECTED] wrote: >>> >>>> What you have there looks right, so silly question (maybe): have you >>>> reloaded the web application after recompiling the ModulePathForm >>>> class? >>>> >>>> - Thorsten >>>> >>>> >>>> >>>>> -----Original Message----- >>>>> From: Martin Grebac [mailto:[EMAIL PROTECTED]] >>>>> Sent: 27 September 2002 13:32 >>>>> To: Struts Users Mailing List >>>>> Subject: Re: again ArrayList and javax.servlet.ServletException: >>>>> BeanUtils .populate exception >>>>> >>>>> >>>>> No, it doesn't work also. I get the same exception everytime. >>>>> >>>>> I want to have the possibility to select multiple folders, so I >>>>> did what you suggested: added property selectedFolders of type >>>>> String[], so I added this code to my ModulePathForm: >>>>> >>>>> private String[] selectedFolders; >>>>> >>>>> public String getSelectedFolders(int index) { >>>>> return this.selectedFolders[index]; >>>>> } >>>>> public String[] getSelectedFolders() { >>>>> return this.selectedFolders; >>>>> } >>>>> public void setSelectedFolders(int index, String >>>>> selectedFolders) { >>>>> this.selectedFolders[index] = selectedFolders; >>>>> } >>>>> public void setSelectedFolders(String[] selectedFolders) { >>>>> this.selectedFolders = selectedFolders; >>>>> } >>>>> >>>>> and the jsp page looks the same as you wrote: >>>>> >>>>> <html:select property="selectedFolders" multiple="true"> >>>>> <html:options property="folders"/> >>>>> </html:select> >>>>> >>>>> I really don't know where is the problem. Really appreciate any >>>>> other hints. >>>>> >>>>> Thanks, >>>>> Martin >>>>> >>>>> >>>>> >>>>> [EMAIL PROTECTED] wrote: >>>>> >>>>> >>>>> >>>>>> Hi, >>>>>> >>>>>> I think the problem is that your <html:select...> and >>>>> >>>>> >>>>> >>>>> <html:options...> tags both reference the "folders" property. >>>>> Judging by your code, the <html:options...> tag is doing what you >>>>> expect i.e. getting the list of folders the user can select from. >>>>> However, your <html:select...> tag is telling Struts to try to >>>>> assign the selected folder back to the form bean by calling >>>>> setFolders (albeit indirectly via BeanUtils.populate), but >>>>> setFolders is expecting an ArrayList rather than a single item >>>>> from a list which your submit is sending back as a String. >>>>> >>>>> >>>>>> I suspect what you need to do is introduce an additional >>>>> >>>>> >>>>> >>>>> property called e.g. selectedFolder into your form bean. Your jsp >>>>> would then look like this: >>>>> >>>>> >>>>>> <html:select property="selectedFolder" multiple="true"> >>>>>> <html:options property="folders"/> >>>>>> </html:select> >>>>>> >>>>>> ...and you will need corresponding setter and getter methods >>>>> >>>>> >>>>> >>>>> in the bean. You can then also have getSelectedFolder() return a >>>>> default value. >>>>> >>>>> >>>>>> Regards, >>>>>> Thorsten >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>>> Hi, >>>>>>> I'm looking for any hint or advice. I've got code like this on my >>>>>>> jsp page: >>>>>>> >>>>>>> <html:select property="folders" multiple="true"> >>>>>>> <html:options property="folders"/> >>>>>>> </html:select> >>>>>>> >>>>>>> property "folders" is a property of my "ModulePathForm" bean: >>>>>>> >>>>>>> /* ModulePathForm.java */ >>>>>>> public class ModulePathForm extends ActionForm{ >>>>>>> >>>>>>> private ArrayList folders; >>>>>>> >>>>>>> public ModulePathForm() { >>>>>>> super(); >>>>>>> folders = new ArrayList(); >>>>>>> } >>>>>>> >>>>>>> public ArrayList getFolders() { >>>>>>> return this.folders; >>>>>>> } >>>>>>> >>>>>>> public void setFolders(ArrayList folders) { >>>>>>> this.folders = folders; >>>>>>> } >>>>>>> } >>>>>>> >>>>>>> the values from the bean are shown, but when I click Submit, I >>>>>>> get this exception: >>>>>>> >>>>>>> javax.servlet.ServletException: BeanUtils.populate >>>>>>> at >>>>>>> org.apache.struts.util.RequestUtils.populate(RequestUtils.java:774) >>>>>>> at >>>>>>> org.apache.struts.action.ActionServlet.processPopulate(ActionS >>>>>>> ervlet.java:2061) >>>>>>> at >>>>>>> org.apache.struts.action.ActionServlet.process(ActionServlet.j >>>>>>> ava:1563) >>>>>>> at org.apache.struts.action.ActionServlet.doPost(ActionServlet. >>>>>>> >>>>>> >>>>>> >>>>>> >>>>> java:509) >>>>> >>>>> >>>>>>> ..... >>>>>>> root cause: >>>>>>> >>>>>>> java.lang.IllegalArgumentException: argument type mismatch >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> To unsubscribe, e-mail: >>>>> >>>>> >>>>> >>>> <mailto:[EMAIL PROTECTED]> >>>> >>>> >>>>> For additional commands, e-mail: >>>>> <mailto:[EMAIL PROTECTED]> >>>>> >>>>> >>>> >>>> >>>> >>>> >>>> >>>> -- >>>> To unsubscribe, e-mail: >>>> <mailto:[EMAIL PROTECTED]> >>>> For additional commands, e-mail: >>>> <mailto:[EMAIL PROTECTED]> >>>> >>>> >>> >>> >>> -- >>> To unsubscribe, e-mail: >>> <mailto:[EMAIL PROTECTED]> >>> For additional commands, e-mail: >>> <mailto:[EMAIL PROTECTED]> >> >> >> >> > > > > -- > To unsubscribe, e-mail: > <mailto:[EMAIL PROTECTED]> > For additional commands, e-mail: > <mailto:[EMAIL PROTECTED]> > > > -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>