@Length指定字符串的长度限制(min,max)
@NotEmpty指定集合不能为空
@Pattern指定对象要匹配正则表达式
在Bean的验证中,如果要验证对应的规则,需要在要验证的对象之前加上@Validated注解,如下所示:
@RequestBody @Validated User user
User的name属性限制了字符串的长度最小是5,最大时10,需要匹配正则表达式“[a-zA-Z]+”。
public class User {
// id不能为空
@NotNull
private String id;
// 最小长度为5,最大长度为10,要陪正则表达式
@Length(min = 5, max = 10)
@Pattern(regexp = "[a-zA-Z]+")
private String name;
private Integer age;
private Date birth;
// 列表numbers不能为空
@NotEmpty
private List<String> numbers;
public List<String> getNumbers() {
return numbers;
}
public void setNumbers(List<String> numbers) {
this.numbers = numbers;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
}
下面是不同情况的错误提示
1、列表为空
2、不匹配正则表达式
3、长度超出限制
下面再附上一些Bean验证的注解:
Bean Validation 的约束
@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 附加的约束
Hibernate Validator 附加的 constraint:
@Email 被注释的元素必须是电子邮箱地址
@Length 被注释的字符串的大小必须在指定的范围内
@NotEmpty 被注释的字符串的必须非空
@Range 被注释的元素必须在合适的范围内