【问题标题】:Spring MVC and CheckboxesSpring MVC 和复选框
【发布时间】:2010-01-13 22:38:45
【问题描述】:

我正在使用 Spring MVC 3.0 并且不能完全看到这个问题的所有部分:我的控制器将生成一个域对象列表。假设有一个简单的 User 对象,它具有 firstName、lastName、age 和 role 属性。我想在表中输出该用户列表(每个属性一列),每一行还有一个默认选中的复选框。然后,使用该页面的人可能会取消选择其中的一些。当他们点击提交按钮时,我希望能够获取选定用户的列表并对他们做一些事情。

我知道Spring中有一个form:checkboxes标签,但是我不太明白如何使用它以及如何在控制器中获取结果。

有什么帮助或建议吗?

【问题讨论】:

  • @axtavt:只是为了提供更多信息,我也与 formCheckboxes 斗争,最终放弃了它。复选框不支持 Spring 绑定

标签: java spring spring-mvc


【解决方案1】:

如果你的User 对象有一个id 字段,你可以像这样提交选定用户的id(对于这个简单的场景,你甚至不需要Spring 的表单标签):

<form ...>
    <c:foreach var = "user" items = "${users}">
        <input type = "checkbox" name = "userIds" value = "${user.id}" checked = "checked" /> <c:out value = "${user.firstName}" /> ...
    </c:foreach>
    ...
</form>

--

@RequestMapping (...)
public void submitUsers(@RequestParam(value = "userIds", required = false) long[] userIds)
{
    ...
}

【讨论】:

  • @RequestParam 中的optional 属性不再有效,可以替换为required
【解决方案2】:

当一个页面包含一个复选框,并且它的包含表单被提交时,浏览器会执行以下操作。

  • 如果复选框被选中,它会以其 'value' 属性作为值提交
  • 如果checkbos 没有被选中,则根本不会提交变量。

在您的情况下,我会将 @RequestParam("abono") 更改为 @RequestParam(required=false, value="abono") ,然后检查您的布尔值是否为空。如果为空,则用户未勾选该复选框。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2014-08-27
  • 1970-01-01
  • 1970-01-01
  • 2013-11-22
  • 2011-08-03
  • 1970-01-01
  • 2016-05-27
  • 2018-11-08
相关资源
最近更新 更多