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

Jag*_*gan 2 jsp struts2

我在jsp页面中有动态数量的复选框,如下所示.

<s:iterator value="details"  status="stat">
         <s:checkbox name="checkbox"  theme="simple" />
         <s:hidden name="hidden" value="%{top}" /> 
</s:iterator>
Run Code Online (Sandbox Code Playgroud)

假设有4个复选框.

和动作类中的setter是

public void setCheckbox(boolean s[])
{
    System.out.println(s.length);
}
Run Code Online (Sandbox Code Playgroud)

如果我没有选中任何复选框,s.length则为零.如果我选择第三个复选框,s.lenght为1,则初始化s[0]true.但问题是在这里如何找到第三个复选框被选中或是否选中了另一个复选框.

s[]={false,false,true,false}如果我选择第三个复选框,我认为setter会初始化.但它正在初始化s[]={true}.

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

Ste*_*tez 5

因为你的复选框都被命名为same(checkbox),所以Struts2只传递以下内容:

checkbox=true&checkbox=true&checkbox=true

这是否意味着您省略了第二个,第三个或第四个复选框?

你真正想要的不是一个布尔数组,而是一个Integer到Boolean的映射.这是一个例子:

示例动作

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;
  }
}
Run Code Online (Sandbox Code Playgroud)

示例JSP

<s:iterator value="details" status="stat">
  <%-- this outputs checkboxes[0], checkboxes[1], etc. --%>
  <s:checkbox name="checkboxes[%{#stat.index}]"  theme="simple" />
</s:iterator>
Run Code Online (Sandbox Code Playgroud)

示例结果

  • 0 - >是的
  • 1 - >假
  • 2 - >真的
  • 3 - >真的