springboot+thymeleaf之表单验证

本篇讲述在spring boot框架中使用thymeleaf库实现表单提交。

1 新建thymeleaf工程

使用IDEA的spring initialize向导新建spring boot工程,选择库web和thymeleaf,这样生成的工程中的pom.xml中包含web和thymeleaf的依赖。并会在main/resouce下生成templates文件夹。

2 新建User实体,使用validator对信息进行验证

package com.example.formvalidate;

import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotEmpty;

public class User {
    private int id;

    @NotEmpty(message="用户名不能为空")
    private String username;

    @NotEmpty(message="密码不能为空")
    @Length(min=6, message="密码长度不能少于六位")
    private String password;

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}

3 新建控制器LoginController

LoginContrller控制器包含有俩个Mapping注解,/index注解引导用户到index.html,/login注解首先用@Valid捕捉错误信息,然后打印登录结果信息。

package com.example.formvalidate;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.validation.Valid;
import java.util.List;

@Controller
public class LoginController {
    @RequestMapping(value="/index")
    public String index() {
        return "index";
    }
    @RequestMapping(value="/login")
    public @ResponseBody
    User login(@Valid User user, BindingResult result, Model model) {
        if (result.hasErrors()) {
            List<ObjectError> error = result.getAllErrors();
            for (ObjectError e : error) {
                System.out.println(e);
            }
            return null;
        }
        return user;
    }
}

4 在templates文件夹下新建index.html文件

表单提交相应的页面就是上面控制器中的/login路径。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8"/>
    <title>Insert title here</title>
</head>
<body>
<form action="login" method="post">
    <p>姓名:<input type="text" name="username"/>
    </p>
    <p>密码:<input type="password" name="password"/>
    </p>
    <p><button>提交</button>
    </p>
</form>
</body>
</html>

5 测试

运行项目,打开http://localhost:8080/index,显示:

输入用户名,和密码,用户名不能为空,密码不能少于6位,然后按提交,将会显示:

如果用户名或密码验证错误,将会在控制台打印错误信息。

猜你喜欢

转载自blog.csdn.net/liuzhijun301/article/details/82624531