注解验证的数据类型备注                            Null  任意类型 参数值必须是 Null  NotNull  任意类型 参数值必须不是 Null
NotBlank
只能作⽤于字符串 字符串不能为 null ,⽽且字符串长度必须⼤于0,⾄少包含⼀个⾮空字符串
NotEmpty
CharSequence
Collection  Map  Array  字符串:字符串长度必须⼤于0,空字符串(“ ”)可以通过校验; Collection :集合⼤⼩必须⼤于0; Map :map 的⼤⼩必须⼤于0; Array :数组长度必须⼤于0;
Size
CharSequence
Collection  Map  Array
同 NotEmpty  Range  数字类型 字符串类型 数值或者字符串的值必须在 min 和 max 指定的范围内 Length
  字符串类型 字符串的长度在min 和  max 之间 Pattern  字符串类型  验证字符串是否符合正则表达式 Min  整型类型  参数值必须⼤于等于 最⼩值 Max
整型类型
参数值必须⼩于等于 最⼤值 DecimalMin  整型类型  参数值必须⼤于等于 最⼩值  DecimalMax  整型类型  参数值必须⼩于等于 最⼤值  AssertTrue  布尔类型  参数值必须为 true  AssertFalse  布尔类型
参数值必须为 false  Past  时间类型  参数值必须⼩于 当前时间 Future  时间类型
参数值必须⼤于 当前时间Java 注解⽅式校验请求参数
1. 参数校验常⽤注解
2.  @Validated 和 @Valid
2.1 相同点
  在检验参数符合规范的功能上基本⼀致;
2.2 不同点
2.2.1 提供者
  validated 是Spring Validation验证框架对参数的验证机制;
  valid是 javax 提供的参数验证机制
2.2.2 作⽤域
  validated :类,⽅法,参数
  valid:⽅法, 字段, 构造⽅法, 参数, TYPE_USE;
  TYPE_USE:
  在 Java 8 之前的版本中,只能允许在声明式前使⽤ Annotation。⽽在 Java 8 版本中,Annotation 可以被⽤在任何使⽤ Type 的地⽅,例如:初始化对象时 (new),对象类型转化时,使⽤ implements 表达式时,或者使⽤ throws 表达式时。
//初始化对象时
String myString = new @Valid String();
//对象类型转化时
myString = (@Valid String) str;字符串长度必须小于等于255
//使⽤ implements 表达式时
class MyList<T> implements List<@Valid T> {
...
}
//使⽤ throws 表达式时
public void validateValues() throws @Valid ValidationFailedException{
...
}
3. 嵌套检验
  在被检验的字段上添加 @Valid 注解就可以实现嵌套检验
  当对象 Man 的字段 houses 包含 House 对象类型时,在检验 houses 字段时可以检验 House 对象的属性字段时,就称为嵌套检验。
  ⽰例如下:
  在检验 Man 对象的 houses 字段时,在houses 字段上添加 @Valid 注解后,就可以检验 list 中的 House 的属性是否符合要求;
  否则只会检验 houses 的集合⼤⼩是否⼤于1,不会校验集合中的 House 对象,⽐如 House 对象的 name 长度是否符合要求。
class Man{
@Valid
@Size(min = 1)
private List<House> houses;
}
class House{
@Length(min = 1,max = 10)
private String name;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。