我正在使用 Spring MVC,我想要一个页面来注册我的用户。我想让他们选择接收电子邮件通知,并且我有一些他们必须接受的服务条款,所以有两个复选框。我受到 HTML 复选框的限制,因为我还使用 thymeleaf 作为我的模板引擎。我想知道您将如何处理和验证复选框的值,无论它们是否被选中。当您使用复选框提交表单时,如果选中了它们,则该值将作为复选框的名称/值对传递到服务器,否则不会传递任何内容。您是否有如下不同的处理程序方法:
@RequestMapping(value = "/register,
method = RequestMethod.POST,
params = {"notify", "agreed_tos"})
public String register(/* other params like username/email */) {
//register user
}
@RequestMapping(value = "/register,
method = RequestMethod.POST)
public String registerMissingToS(/* other params like username/email */) {
// return that agreed_tos checkbox wasn't checked
}
这样,如果复选框被选中,第一个方法将被调用,如果没有,第二个方法将被调用。有没有办法检查复选框是否已选中,以便我可以在单个 Controller 方法中完成所有这些操作?你会怎么做?
最佳答案
解决方案 A:有点难看,但最快:从 RequestMapping 中删除参数,然后使用 request.getParameter("agreed_tos") 来检查此参数。
解决方案 B:在表单中使用命令对象,因此 thymeleaf 或 spring 标签可以自动添加发送的隐藏输入,以防用户将复选框留空并且 SpringMVC 将此输入绑定(bind)到命令对象字段
解决方案 C:可能带有 defaultValue 和 required=false 的 @RequestParam 允许在一种方法中执行这两种情况
关于java - 使用 Spring MVC Controller 处理和验证 HTML 复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14087296/