空检查
- @NotNull:不能为null,但可以为empty。
- @NotEmpty:不能为null,而且长度必须大于0
- @NotBlank:只能作用在String上,不能为null,而且调用trim()后,长度必须大于0
1.String name = null;
@NotNull: false
@NotEmpty:false
@NotBlank:false
2.String name = "";
@NotNull:true
@NotEmpty: false
@NotBlank: false
3.String name = " ";
@NotNull: true
@NotEmpty: true
@NotBlank: false
4.String name = "Great answer";
@NotNull: true
@NotEmpty:true
@NotBlank:true
Booelan检查
- @AssertTrue:验证 Boolean 对象是否为 true
- @AssertFalse:验证 Boolean 对象是否为 false
长度检查
- @Size:验证对象(Array,Collection,Map,String)长度是否在给定的范围之内
- @Length:验证字符串是否包含在一个区间
日期检查
- @Past:验证 Date 和 Calendar 对象是否在当前时间之前
- @Future:验证 Date 和 Calendar 对象是否在当前时间之后
- @Pattern:验证 String 对象是否符合正则表达式的规则
数值检查
建议使用在Stirng、Integer类型上,不建议使用在int类型上,因为表单值为空串时无法转换为int,但可以将空串转换成Stirng类型,值为"",也可以将空串转为Integer类型,值为null
- @Min:验证 Number 和 String 对象是否大等于指定的值
- @Max:验证 Number 和 String 对象是否小等于指定的值
- @DecimalMax:被标注的值必须不大于约束中指定的最大值. 这个约束的参数是一个通过BigDecimal定义的最大值的字符串表示.小数存在精度
- @DecimalMin:被标注的值必须不小于约束中指定的最小值. 这个约束的参数是一个通过BigDecimal定义的最小值的字符串表示.小数存在精度
- @Digits(integer=,fraction=) 验证字符串是否是符合指定格式的数字,interger指定整数精度,fraction指定小数精度
- @Range:检查数字是否介于min和max之间
@Validated和@Valid区别
Spring Validation验证框架对参数的验证机制提供了@Validated(Spring’s JSR-303规范,是标准JSR-303的一个变种),javax提供了@Valid(标准JSR-303规范),配合BindingResult可以直接提供参数验证结果。
在检验Controller的入参是否符合规范时,使用@Validated或者@Valid在基本验证功能上没有太多区别。但是在分组、注解位置、嵌套验证等功能上两个有所不同:
-
分组
@Validated:提供了一个分组功能,可以在入参验证时,根据不同的分组采用不同的验证机制。
@Valid:作为标准JSR-303规范,还没有吸收分组的功能。 -
注解位置
@Validated:可以用在类型、方法和方法参数上。但是不能用在成员属性(字段)上
@Valid:可以用在方法、构造函数、方法参数和成员属性(字段)上 -
嵌套验证
@Validated:用在方法入参上无法单独提供嵌套验证功能。不能用在成员属性(字段)上,也无法提示框架进行嵌套验证。能配合嵌套验证注解@Valid进行嵌套验证。
@Valid:用在方法入参上无法单独提供嵌套验证功能。能够用在成员属性(字段)上,提示验证框架进行嵌套验证。能配合嵌套验证注解@Valid进行嵌套验证。