Hibernate-validator
SpringBoot中的数据校验预先配置好的,不需要手动添加
默认使用的是r
校验框架
对实体对象数据校验步骤
1 修改实体类添加校验规则
/**
* @NotNull 对基本数据类型的对象类型做非空校验
* @NotBlank 对字符串类型做非空校验
* @NotEmpty 对集合类型做非空校验
*/
public class User {
@NotBlank(message = "账号不能为空")
private String account;
@NotBlank(message = "密码不能为空")
@Size(min=2,max=10,message = "密码长度必须是2到10个字符")
private String password;
@NotBlank(message = "为了接收信息,邮箱不能为空")
@Email(message = "邮箱格式不正确")
private String email;
2 在Controller中开启校验规则
@Controller
@RequestMapping("/user")
public class UserController {
/**
* 添加用户
*/
@RequestMapping("/addUser")
public String addUser(@Validated User user, BindingResult result){
if(result.hasErrors()){
//-以下实际不需要
/*List<ObjectError> list = result.getAllErrors();
for(ObjectError err:list){
FieldError fieldError = (FieldError) err;//FieldError为ObjectError子类
String fieldName = fieldError.getField();
String msg = fieldError.getDefaultMessage();
System.out.println(fieldName+"\t"+msg);
}*/
return "addUser";
}
System.out.println(user);
return "ok";
}
}
对应的html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>SpringBoot-Validate</title>
</head>
<body>
<form th:action="@{/user/addUser}" method="post">
<p>Name <input type="text" name="name"/></p>
<p>Sex <input type="text" name="sex"/></p>
<p>Age<input type="text" name="age"/></p>
<input type="submit" value="ok">
</form>
</body>
</html>
常用校验规则
JSR提供的校验注解:
@Null 被注释的元素必须为 null
@NotNull 被注释的元素必须不为 null
@AssertTrue 被注释的元素必须为 true
@AssertFalse 被注释的元素必须为 false
@Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max=, min=) 被注释的元素的大小必须在指定的范围内
@Digits (integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past 被注释的元素必须是一个过去的日期
@Future 被注释的元素必须是一个将来的日期
@Pattern(regex=,flag=) 被注释的元素必须符合指定的正则表达式
Hibernate Validator提供的校验注解:
@NotBlank(message =) 验证字符串非null,且长度必须大于0
@Email 被注释的元素必须是电子邮箱地址
@Length(min=,max=) 被注释的字符串的大小必须在指定的范围内
@NotEmpty 被注释的字符串的必须非空
@Range(min=,max=,message=) 被注释的元素必须在合适的范围内