我在 jsp 页面中有动态数量的复选框,如下所示。
<s:iterator value="details" status="stat">
<s:checkbox name="checkbox" theme="simple" />
<s:hidden name="hidden" value="%{top}" />
</s:iterator>
假设有 4 个复选框。
动作类中的设置器是
public void setCheckbox(boolean s[])
{
System.out.println(s.length);
}
如果我不选择任何复选框,s.length
为零。
如果我选择第三个复选框,s.lenght
为 1 并且正在初始化s[0]
with true
。
但问题是我如何知道是否选择了第三个复选框或选择了另一个复选框。
我以为 setter 会初始化s[]={false,false,true,false}
,如果我选择第三个复选框。但正在初始化s[]={true}
.
需要这些选定框的相应隐藏值才能在数据库中执行所需的操作。但为此我需要找到选择复选框。
请建议我任何解决方案。
因为您的复选框的名称都相同(checkbox
),Struts2 只是传递以下内容:
checkbox=true&checkbox=true&checkbox=true
这是否意味着您省略了第二个、第三个或第四个复选框?
您真正想要的不是布尔值数组,而是整数到布尔值的映射。这是一个例子:
示例操作
public class MyAction extends ActionSupport {
private Map<Integer, Boolean> checkboxes;
...
public Map<Integer, Boolean> getCheckboxes() {
return checkboxes;
}
public void setCheckboxes(Map<Integer, Boolean> checkboxes) {
this.checkboxes = checkboxes;
}
}
JSP 示例
<s:iterator value="details" status="stat">
<%-- this outputs checkboxes[0], checkboxes[1], etc. --%>
<s:checkbox name="checkboxes[%{#stat.index}]" theme="simple" />
</s:iterator>
结果示例
- 0 -> 真
- 1 -> 假
- 2 -> 真
- 3 -> 真
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)