使用 @Valid 对实体进行属性校验
接收实体类的时候,需要对实体类的部分属性进行校验,可以使用
@Vaild
和@Validated
@Valid
可以用在方法、构造函数、方法参数和成员属性上
与@Valid搭配的,加在实体类属性上校验实体类属性的注解如下
限制 | 说明 |
---|---|
@Null | 限制只能为null |
@NotNull | 限制必须不为null |
@AssertFalse | 限制必须为false |
@AssertTrue | 限制必须为true |
@DecimalMax(value) | 限制必须为一个不大于指定值的数字 |
@DecimalMin(value) | 限制必须为一个不小于指定值的数字 |
@Digits(integer,fraction) | 限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction |
@Future | 限制必须是一个将来的日期 |
@Max(value) | 限制必须为一个不大于指定值的数字 |
@Min(value) | 限制必须为一个不小于指定值的数字 |
@Past | 限制必须是一个过去的日期 |
@Pattern(value) | 限制必须符合指定的正则表达式 |
@Size(max,min) | 限制字符的长度必须在min到max之间 |
@NotEmpty | 验证注解的元素值不为null且不为空(字符长度不为0、集合大小不为0) |
@NotBlank | 验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty ,@NotBlank 只应用于字符串且比较时会去除字符串的空格 |
验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式 |
示例如下:
实体类:
message的内容是当校验不通过的时候的错误信息
@Max(value= 1000,,message = "每页最多展示的记录条数为1000")
@Min(value = 10,message = "每页最少展示的记录条数为10")
private Integer pageSize;
使用
public ResponseData<Object> test(@RequestBody @Valid TestVO testVO) {
...
}
注意:如果只添加
@Min
这类注解,实体类使用的地方没有@Validated
或@Valid
,那么@Min
的校验是不生效的
@Validated
可以用在类型、方法和方法参数上。但是不能用在成员属性上,不同场景下,对于实体类的属性的校验情况可能不同,可以用@Validated来进行分组校验
使用方法:
1、自定义若干个接口,接口内容为空,如果ValidationForA,ValidationForB
2、在实体类属性注解上添加分组
示例如下:
@Max(value = 1000,,message = "每页最多展示的记录条数为1000",groups={ValidationForA.class})
@Min(value = 10,message = "每页最少展示的记录条数为10")
private Integer pageSize;
使用
public ResponseData<Object> test(@RequestBody @Validated({ValidationForA.class}) TestVO testVO) {
...
}
比较
1、可以使用BindingResult实体类来接收校验结果
原文章地址:
https://blog.csdn.net/weixin_45095479/article/details/114754190