struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Prasanth Pasala <ppas...@pangburngroup.com>
Subject Re: Struts2 Checkboxlist
Date Wed, 06 Feb 2019 15:31:35 GMT
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 <ppasala@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 <ppasala@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 <ppasala@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
>>>> <yasserzamani@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 <dbadmin@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-unsubscribe@struts.apache.org
>>>>> For additional commands, e-mail: user-help@struts.apache.org
>>>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>>> For additional commands, e-mail: user-help@struts.apache.org
>>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message