概述
1. 概述
本篇是数据验证系列最后篇,将会给大家介绍分组验证
;上一篇自定义验证注解中有提到,groups
属性,它正是用来分组验证,解决”一些条件需要验证某个属性,另外的条件不需要验证该属性”的情形。
2. 源码分析
2.1. 添加pom.xml
依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2.2 创建实体类和分组验证接口
@Data
public class User {
public interface Default{}
public interface Update{}
@NotNull(message = "id不能为空" , groups = Update.class)
private Long id;
@NotNull(message = "名字不能为空", groups = Default.class)
@Length(min = 4, max = 10, message = "name 长度必须在 {min} - {max} 之间", groups = Default.class)
private String name;
@NotNull(message = "年龄不能为空", groups = Default.class)
@Min(value = 18, message = "年龄不能小于18岁", groups = Default.class)
private Integer age;
}
groups
属性用来分组,@Validated
注解的value
属性匹配相同的groups
,纳入验证访问;
上面代码,更新user
时需要验证id
非空,其余情况无需验证
2.3 Controller
层
@RestController
public class UserController {
@PostMapping("/user")
public R addUser(@Validated(value = User.Default.class) @RequestBody User user, BindingResult br){
if(br.hasErrors()){
return R.isFail().msg(br.getFieldError().getDefaultMessage());
} else {
return R.isOk().data(user);
}
}
@PutMapping("/user")
public R updateUser(@Validated(value = {User.Update.class, User.Default.class}) @RequestBody User user,
BindingResult br) {
if(br.hasErrors()){
return R.isFail().msg(br.getFieldError().getDefaultMessage());
} else {
return R.isOk().data(user);
}
}
}
使用
REST
风格
Post
方法对应新增,@Validated(value = User.Default.class
说明无需验证id
非空
Put
方法对应更新,@Validated(value = {User.Update.class, User.Default.class}
说明需要默认验证和非空验证
3. 测试结果
两个接口参数内容一致,都缺少
id
字段 ,但insert
是成功的,而update
接口中提示了id
不能为空;测试结果表明,符合我们的预期要求。
4. 工程目录
5. 结束语
说点什么呢,有任何建议,欢迎留言探讨,本文源码。
欢迎关注博主公众号,第一时间推送最新文章
最后
以上就是高大小刺猬为你收集整理的SpringBoot基础教程2-1-9 数据验证-分组验证的全部内容,希望文章能够帮你解决SpringBoot基础教程2-1-9 数据验证-分组验证所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复