7、Hibernate Validate 校验(验证表单)
成员变量的注解—接收数据的Javabean
1)空检查 NotBlank(message=”{不允许为空}“)
2)boolean
@AssertTrue:验证boolean属性是否为true
@AssertFalse:验证boolean属性是否为false
3)长度检查@Length(min=1,max=10,message=”长度须在1-10之间“)
校验总结:
1、jar包引入(调低boot版本)
2、实体类成员变量上定义校验规则
3、@Validated校验
4、通过BingdingResult.hasErrors()方法获知校验结果
5、校验不通过通过 th:errors回显错误信息
步骤
1、调低boot版本 -> 2.1.6.RELEASE
改完版本后就会出现此jar包
2、实体类成员变量上定义校验规则
package com.qst;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotBlank;
public class MyUser {
@NotBlank(message = "用户名不能位空!")
private String username;
@Length(min=6,max = 6,message = "密码长度需为6位!")
private String password;
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;
}
@Override
public String toString() {
return "MyUser{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
3、@Validated校验+通过BingdingResult.hasErrors()方法获知校验结果
//接收完之后进行信息校验
@RequestMapping("/register")
public String register(@ModelAttribute("user") @Validated MyUser u, BindingResult result){
// BindingResult 接收校验结果
if(result.hasErrors()){//校验没有通过
return "register";
}
return "main";//校验通过
}
@RequestMapping("/toRegister")
public String toRegister(Model model){
model.addAttribute("user",new MyUser());
return "register";
}
4、校验不通过通过 th:errors回显错误信息
<!DOCTYPE html>
<html lang="en">
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form th:action="@{/register}" th:object="${user}" method="post">
用户名:<input type="text" th:field="*{username}">
<span th:errors="*{username}"></span><br/>
密码:<input type="password" th:field="*{password}">
<span th:errors="*{password}"></span><br/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
运行效果图如下