java - 使用 Spring MVC Controller 处理和验证 HTML 复选框

标签 java html spring-mvc thymeleaf

我正在使用 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/

相关文章:

php - 在 PHP 中验证 XHTML5?

java - 使用 Spring 4 Java 配置配置 Jackson

spring - spring mvc中的转换数据类型

jquery - 插入将复制的可选空格

java - 我可以在方法中有一个接口(interface)吗?

java - java中的字符串池

java - 如何从父项目定义 Gradle kotlin dsl 中的公共(public)依赖项?

javascript - Z 索引和堆叠

java - Spring mvc Controller jsr 303基本列表验证

java - JSP - Netbeans 无法使用 session bean