官网
https://www.ibm.com/developerworks/cn/java/j-lo-jsr303/index.html
//开启数据校验 @Validated
@Validated //开启数据校验
Constraint 详细信息
@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(value) 被注释的元素必须符合指定的正则表达式
Hibernate Validator 附加的 constraint
@Email 被注释的元素必须是电子邮箱地址
@Length 被注释的字符串的大小必须在指定的范围内
@NotEmpty 被注释的字符串的必须非空
@Range 被注释的元素必须在合适的范围内
一些使用方式
/**
* 实体类
*/
@Validated
public class Test {
private String userUid;
//用户名不为空,使用默认提示
@NotNull
private String userName;
//密码进行长度和格式的验证,个性化提示
@Size(min=6, max=15,message="密码长度必须在 6 ~ 15 字符之间!")
@Pattern(regexp="^[a-zA-Z0-9|_]+$",message="密码必须由字母、数字、下划线组成!")
private String userPwd;
//手机号码也用个性化提示,使用正则表达式进行匹配,非空时不验证
@Pattern(regexp="^1(3|4|5|7|8)\\d{9}$",message="手机号码格式错误!")
private String userMobile;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date userBirthday;
在Controller上绑定验证
@RestController
public class ValidatorTestController {
/**
* 使用 @Validated 开启对象验证
* @param test
* @return
*/
@PostMapping("/validator")
public Object validatorObject(@Validated Test test, BindingResult br){
Map<String,Object> errorMap = new HashMap<String,Object>();
if(br.hasErrors()){
//对错误集合进行遍历,有的话,直接放入map集合中
br.getFieldErrors().forEach(p->{
errorMap.put(p.getField(), p.getDefaultMessage());
});
}
//返回错误信息
return errorMap;
}
}