之分组校验
分组校验
在使用JSR 303来帮助我们简化数据校验的时候,难免会遇到多个方法对同一个Bean有不同的数据校验规则。那此时就可以使用分组来帮助我们实现。
每个分组指定不同的校验规则,不同的方法执行不同的分组,就可以得到不同的校验结果
通过对javax.validation.constraints下每个注解的分析,发现JSR 303 每个注解都默认有3个属性
message 用来定义数据校验失败后的提示消息,默认读取配置文件的内容。全局搜索 ValidationMessages.properties,可以看到默认的信息。
groups 用来定义分组,是一个Class<?>[]数组,可以定义多个分组。
实现分组的步骤:
Step1.
使用接口,定义分组
Step2.
指定注解时,通过 groups 指定分组。用于指定在某个分组条件下,才去执行校验规则。
Step3.
在相关的业务方法上,通过 @Validated 注解指定分组,去指定校验。
使用案例
1.创建分组接口
创建AddBrandGroup和UpdateBrandGroup两个空接口,内部不做任何实现。
AddBrandGroup用来指定添加Brand时的校验规则
UpdateBrandGroup用来指定修改Brand时的校验规则
2.给Bean指定分组信息
通过groups指定分组,使用了分组一定要记得在Bean指定,不然校验不会生效
3.在业务方法上指定分组
通过@Vlidated注指定分组信息
那么为什么不能使用@Valid注解添加分组了?那是因为@Valid本身不支持分组的
但springframework为我们提供了分组校验
4.postman测试
可以看到自定义的分组校验已经生效