[ 
https://issues.apache.org/struts/browse/WW-2339?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=43567#action_43567
 ] 

Greg Lindholm commented on WW-2339:
-----------------------------------

I'm having this problem as well. 

I'm displaying a list of checkboxes for account names:

<s:iterator value="accountInfoList" status="accountInfoStatus">
<s:checkbox name="accountIds" label="%{name}" value="%{enabled}" 
fieldValue="%{id}" />
</s:iterator>

It then sets the array of selected account ids.

public void setAccountIds(Long[] accountIds)...

This works fine as long as at least one checkbox was selected.
If no checkboxes are selected then I get:

ERROR com.opensymphony.xwork2.interceptor.ParametersInterceptor:204 - 
ParametersInterceptor - [setParameters]: Unexpected Exception caught setting 
'accountIds' on 'class com.xyz.struts.MyAction: Error setting expression 
'accountIds' with value 'false'


Did a little debugging and I think the problem is in the CheckboxInterceptor.

It's creating a new param to handle the not checked case, this isn't correct if 
we have an array of checkboxes.

I think it needs to check if the parameter "__checkbox_xxx" value is an array 
with size > 1 it should not create the new 'false' param.

If I can make this work I will submit the patch.

> empty checkbox list results in "Invalid field value for field" error when 
> using Collection or array containing non-boolean values.
> ----------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: WW-2339
>                 URL: https://issues.apache.org/struts/browse/WW-2339
>             Project: Struts 2
>          Issue Type: Bug
>          Components: Core Interceptors
>    Affects Versions: 2.0.11
>         Environment: Tomcat 6, XWork 2.0.4
>            Reporter: Mike Calmus
>             Fix For: Future
>
>
> I have an action that has a "selectedPageItems" element of type List<Long>. 
> Using a JSp containing several checkboxes with value attributes of type Long, 
> I receive an "Invalid field value for field" error when no items are selected.
> The CheckboxInterceptor class has the following code block:
>                 // is this checkbox checked/submitted?
>                 if (!parameters.containsKey(name)) {
>                     // if not, let's be sure to default the value to false
>                     newParams.put(name, uncheckedValue);
>                 }
> This causes a single boolean (or String) value to be added to the parameter 
> list when no values are selected. This works fine if the Collection holds 
> String or boolean values. However, in my situation the value can not be 
> assigned to the Collection, giving the error.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to