I think the issue I am having is due to the theme, I had old checkboxlist.ftl code. Once it is updated to the latest code it is working well. The only change I make in it is show each checkbox in a separate line.
Appreciate all the help. Thanks, Prasanth On 2/6/19 9:31 AM, Prasanth Pasala wrote: > So there is no need to add MultiselectInterceptor in the action definition? > > Below is the checkboxlist in the jsp. accountNames map is in the account to > provide the list values and names. > > <s:checkboxlist name="form.account" list="accountNames" listKey="%{key}" > listValue="%{value}" theme="tpg" ></s:checkboxlist> > > Thanks, > Prasanth > > On 2/6/19 8:53 AM, Yasser Zamani wrote: >> 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 >>>> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org >> For additional commands, e-mail: user-h...@struts.apache.org >> >