小编典典

如何在Struts 2操作类中检索复选框值?

jsp

我在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]true。但问题在于,如何找到第三个复选框或另一个复选框。

我以为s[]={false,false,true,false}如果选择第三个复选框,则setter将初始化。但是它正在初始化s[]={true}

这些选定框的相应隐藏值是执行数据库中所需操作所必需的。但是为此,我需要找到选择复选框。
请给我建议任何解决方案。


阅读 256

收藏
2020-06-08

共1个答案

小编典典

因为您的复选框都被命名为相同的(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->是
2020-06-08