[
https://issues.apache.org/jira/browse/WW-1534?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16029600#comment-16029600
]
Markus Schulz commented on WW-1534:
-----------------------------------
No, this isn't solved by WW-2339. I guess the patch rev655721 mentioned in
WW-2339 is now the git commit 9a22985c1f6554b908df14e53cda32b41f1e33ec.
This patch does't distinguish between a single rendered checkbox with a certain
name (often used with boolean getter/setter in the action) and multiple
rendered checkboxes with the same name (often used with a list getter/setter
(e.g. ids) in the action), but the latter actually renders a single checkbox
only.
This is the case if you e.g. iterate over a list and render a checkbox for
every entry in the list. If the list contains only a single entry, then you
will get a single checkbox.
As a workaround a hidden div containing two additional checkboxes can be used
to ensure that there are more than one rendered checkboxes:
<div style="display:none;">
<s:checkbox name="myIds" fieldValue="0" value="false"/>
<s:checkbox name="myIds" fieldValue="0" value="false"/>
</div>
<s:iterator ...>
<s:checkbox name="myIds" fieldValue="..." value="..."/>
</s:iterator>
I know that this is ugly, but I don't see a chance to get this distinguished in
the interceptor.
> The value of checkbox getted in server-side is "false" when no any checkbox
> been selected.
> ------------------------------------------------------------------------------------------
>
> Key: WW-1534
> URL: https://issues.apache.org/jira/browse/WW-1534
> Project: Struts 2
> Issue Type: Improvement
> Components: Value Stack
> Affects Versions: 2.0.1
> Environment: tomcat-5.5.20 / jdk1.5.0.08
> Reporter: Ling Chang Ming
> Fix For: Future
>
>
> jsp section:
> <s:iterator value="%{#request.rolePs.items}" id="role" status="status">
> <tr >
> <td height="25" width="5%">
> <s:checkbox name="roleId" fieldValue="%{id}"
> theme="simple"/>
> </td>
> </tr>
> ........
> </s:iterator>
> action section:
> ....
> private String[] roleId;
> public String[] getRoleId() {
> return roleId;
> }
> public void setRoleId(String[] roleId) {
> this.roleId = roleId;
> }
> .....
> the retrieved value of "roleId" is {"false"} when user doesn't select any
> checkbox elements. In my opinion, this case should returns null directly.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)