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
>>

Reply via email to