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

标签 jsp struts2

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

<s:iterator value="details"  status="stat">
         <s:checkbox name="checkbox"  theme="simple" />
         <s:hidden name="hidden" value="%{top}" /> 
</s:iterator>

假设有 4 个复选框。

action类中的setter是

public void setCheckbox(boolean s[])
{
    System.out.println(s.length);
}

如果我不选择任何复选框,s.length 为零。 如果我选择第 3 个复选框,s.lenght 为 1,它正在使用 true 初始化 s[0]。 但是这里的问题是如何找到是否选中了第 3 个复选框或另一个复选框。

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

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

最佳答案

因为您的复选框都被命名为相同的 (checkbox),Struts2 只是传递以下内容:

checkbox=true&checkbox=true&checkbox=true

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

您真正想要的不是 bool 值数组,而是整数到 bool 值的映射。这是一个例子:

示例操作

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 -> 正确

关于jsp - 如何在 Struts 2 操作类中检索复选框值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6800008/

相关文章:

java - struts2:IF 中的枚举

java - 为什么 struts 资源包具有 myresource.properties 和 myresource_en.properties 文件

java - 属性 setData 的不兼容类型 [JSON+Struts2 插件]

html - 如何在运行时在 JSP 中包含 HTML?

java - 使用约定插件更改 Struts2 中的 URL 映射

java - 文件对话框中可接受的扩展名

java - Struts2 填充 <s :property> tags in JSP page 的计时

java - Stackoverflow 类似于 Struts2 或 JSP 的 URL

java - Web服务器与应用服务器通信

java - spring 添加标签构建报错