前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java Bean Validation分组校验

Java Bean Validation分组校验

作者头像
十毛
发布2019-05-15 11:18:02
4.6K0
发布2019-05-15 11:18:02
举报

Java Bean Validation使用中,最常见的一个场景是,我们在增加和修改实体的时候,一般都是使用同一个实体类,但是增加和修改操作对实体的参数校验是不同的。Java Bean Validation提供分组校验的功能,可以实现针对不同的场景应用不同的校验规则

定义分组类

每个分组类只需要一个接口就可以了

  • AddGroup
代码语言:javascript
复制
public interface AddGroup {
}
  • UpdateGroup
代码语言:javascript
复制
public interface UpdateGroup {
}

校验规则上添加分组

代码语言:javascript
复制
@Data
public class Person {
    //添加分组信息:添加的时候不能有id,修改的时候却一定要有id
    @Null(message = "id should be empty", groups = {AddGroup.class})
    @NotNull(message = "id should not be empty", groups = {UpdateGroup.class})
    private Integer id;

    @Length(min = 2, max = 10, message = "name的长度为[2-10]之间")
    @NotBlank(message = "name should not be empty")
    private String name;
}

修改校验接口

  • @Valid修改成@Validated
  • 添加分组{AddGroup.class, Default.class}
代码语言:javascript
复制
@PostMapping("create")
public WebResult<String> create(@Validated({AddGroup.class, Default.class}) @RequestBody Person person) {
    log.info("person to create: {}", person);
    return new WebResult<>(person.getName());
}

@PutMapping("update")
public WebResult<Void> update(@Validated({UpdateGroup.class, Default.class}) @RequestBody Person person) {
    log.info("person to update: {}", person);
    return WebResult.SUCCESS;
}

注意事项

  • 配置分组的时候,记得不要漏掉默认分组Default.class,否则就只会校验groups = {AddGroup.class}的规则了

参考

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.05.06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 定义分组类
  • 校验规则上添加分组
  • 修改校验接口
  • 注意事项
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档