Ach! Sorry, you're right. For checkbox list it's MultiselectInterceptor class which handles this and here it works with following config:
List<Long> selectedLongs= new ArrayList<>(); public List<Long> getLongs(){ List<Long> longs= new ArrayList<>(); longs.add(0L); longs.add(1L); return longs; } public void setSelectedLongs(List<Long> selectedLongs){ this.selectedLongs = selectedLongs; } public List<Long> getSelectedLongs(){ return selectedLongs; } <s:checkboxlist tooltip="longs test" label="Longs Test" list="longs" name="selectedLongs" value="selectedLongs"/> <action name="exampleSubmit" class="org.apache.struts2.showcase.UITagExample" method="doSubmit"> <result>/WEB-INF/tags/ui/exampleSubmited.jsp</result> <result name="input">/WEB-INF/tags/ui/example.jsp</result> </action> When I post an empty form, MultiselectInterceptor adds an empty string for selectedLongs http param, then Struts internal conversion converts it to an empty instance of List<Long>, then setSelectedLongs will be called here with it. Regards. >-----Original Message----- >From: Prasanth Pasala <ppas...@pangburngroup.com> >Sent: Wednesday, February 6, 2019 12:30 AM >To: user@struts.apache.org >Subject: Re: Struts2 Checkboxlist > >Hi Yasser, > >Even after having the param the ArrayList<Long> was not populated with -1 for >unchecked checkboxes. The ArrayList<Long> is in form. The set method in the >form is not getting called when I don't check any of the checkboxes. I am >using a >checkboxlist rather than individual checkboxes. > > <interceptor-ref name="scope"> > <param name="key"></param> > <param name="session">form</param> > </interceptor-ref> > <interceptor-ref name="defaultStack"> > <param name="checkbox.uncheckedValue">-1</param> > </interceptor-ref> > > >Thanks, >Prasanth > >On 2/5/19 5:43 AM, Yasser Zamani wrote: >> Hi Prasanth, >> >> Yes, I think. Now I can recall a long discussion about this at [1]. i.e. you >> also can >keep array list of long but override the interceptor like below [2]: >> >> <action name="ListConverterTest" >> class="com.afs.ListConverterTestAction"> >> <interceptor-ref name="defaultStack"> >> <param name="checkbox.uncheckedValue">-1</param> >> </interceptor-ref> >> >> Kind Regards. >> >> [1] https://github.com/apache/struts/pull/169 >> [2] https://github.com/apache/struts/pull/169#issuecomment-352999309 >> >> >>> -----Original Message----- >>> From: Prasanth Pasala <ppas...@pangburngroup.com> >>> Sent: Tuesday, February 5, 2019 3:26 AM >>> To: user@struts.apache.org >>> Subject: Re: Struts2 Checkboxlist >>> >>> I am using the defaultStack but the ArrayList used for the checkboxes >>> is of type Long. If we change it to ArrayList of Boolean would the >>> interceptor set the values to false? Or is this only applicable if >>> you have individual checkboxes rather than checkboxlist? >>> >>> Thanks, >>> Prasanth >>> >>> On 2/4/19 4:29 PM, Paul Zepernick wrote: >>>> Yes, setFoo is only called if the checkbox is checked. However, >>>> Struts 2 does have a checkbox interceptor: >>>> https://struts.apache.org/core-developers/checkbox-interceptor.html >>>> >>>> This interceptor defaults checkbox Boolean's to False if the box is not >checked. >>> This is part of the default interceptor stack. >>>> Paul >>>> >>>> -----Original Message----- >>>> From: Prasanth Pasala <ppas...@pangburngroup.com> >>>> Sent: Monday, February 4, 2019 5:21 PM >>>> To: user@struts.apache.org >>>> Subject: Re: Struts2 Checkboxlist >>>> >>>> NOTICE: This email originated from outside of the organization. Do >>>> not click >>> links or open attachments unless you recognize the sender and know >>> the content is safe. >>>> Is that how Struts2 is expected to work? Meaning setFoo would not be >>>> called if >>> non of the Foo checkboxes are selected? I know that is how Struts1 worked. >>>> Thanks, >>>> Prasanth >>>> >>>> On 2/2/19 7:08 PM, Prasanth Pasala wrote: >>>>> Hi Yasser, >>>>> >>>>> When none of the checkboxes is selected the setFoo is not getting called. >>>>> >>>>> Thanks >>>>> Prasanth >>>>> >>>>> On February 2, 2019 8:02:07 AM CST, Yasser Zamani >>> <yasserzam...@apache.org> wrote: >>>>>> Hi Prasanth, >>>>>> >>>>>> AFAIK this tag is like this: >>>>>> >>>>>> <s:checkboxlist name="foo" list="bar" value="baz"/> >>>>>> >>>>>> It calls getBar method of your action or finds bar in value stack >>>>>> to find out what to display. Same for baz to find out which to be >>>>>> selected. Then it calls yourAction.setFoo to post selected items. i.e. >>>>>> it is up to you what you do with it in setFoo method. Normally you >>>>>> should clear baz and fill it with them again to update selected items. >>>>>> >>>>>> Thanks for using Struts! >>>>>> >>>>>> Kind Regards. >>>>>> >>>>>>> -----Original Message----- >>>>>>> From: Prasanth <dbad...@pangburngroup.com> >>>>>>> Sent: Saturday, February 2, 2019 1:08 AM >>>>>>> To: user@struts.apache.org >>>>>>> Subject: Struts2 Checkboxlist >>>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> I am using a checkboxlist on a jsp page which corresponds to a >>>>>> ArrayList in the >>>>>>> form class, which is used to store form data from a multi page wizard. >>>>>> I am using >>>>>>> scope interceptor to store the form class in session so that the >>>>>>> data >>>>>> persists as >>>>>>> the user navigates the wizard. When the user selects some check >>>>>>> boxes >>>>>> it is >>>>>>> correctly populated in the form class but if the user navigates >>>>>>> back >>>>>> in the wizard >>>>>>> and unchecks the check box (non of the check boxes selected) >>>>>>> struts >>>>>> doesn't set >>>>>>> the ArrayList to empty. It will still contain the old selection. >>>>>>> What >>>>>> is the best way >>>>>>> to solve this issue? >>>>>>> >>>>>>> My Options: >>>>>>> 1. Should I use Preparable and set this ArrayList to empty? Since >>>>>>> this >>>>>> is a wizard >>>>>>> (multiple pages submitting to the same action) have to make sure >>>>>>> it is >>>>>> done only >>>>>>> when submitting the page that have these checkboxes. >>>>>>> 2. Create two separate ArrayLists, one to get values from Struts >>>>>>> and >>>>>> another to >>>>>>> save the original selection and clear the first array list. Down >>>>>>> side >>>>>> is I need to >>>>>>> populate the list linked to the form when user navigates back to >>>>>>> that >>>>>> page. >>>>>>> Neither of them seem elegant. Is there a way to make struts set >>>>>>> the >>>>>> ArrayList to >>>>>>> empty when user doesn't select any check box? >>>>>>> >>>>>>> Using Struts 2.3.35 >>>>>>> >>>>>>> Thanks, >>>>>>> Prasanth >>>>>> ------------------------------------------------------------------ >>>>>> -- >>>>>> - >>>>>> To unsubscribe, e-m >>>> Disclaimer: This communication and any files transmitted with it may >>>> contain >>> information that is privileged, confidential and/or exempt from >>> disclosure under applicable law. If you are not the intended >>> recipient, you are hereby notified that any disclosure, copying, >>> distribution, or use of the information contained herein (including >>> any reliance thereon) is strictly prohibited. If you received this >>> communication in error, please immediately contact the sender and destroy >the material in its entirety, whether in electronic or hard copy format. Thank >you. >>>> -------------------------------------------------------------------- >>>> - To unsubscribe, e-mail: user-unsubscr...@struts.apache.org >>>> For additional commands, e-mail: user-h...@struts.apache.org >>>> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org >> For additional commands, e-mail: user-h...@struts.apache.org >>