美文网首页框架建设收集
Java Bean Validation分组校验

Java Bean Validation分组校验

作者: 十毛tenmao | 来源:发表于2019-05-06 20:46 被阅读248次

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

    定义分组类

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

    • AddGroup
    public interface AddGroup {
    }
    
    • UpdateGroup
    public interface UpdateGroup {
    }
    

    校验规则上添加分组

    @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}
    @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}的规则了

    参考

    相关文章

      网友评论

        本文标题:Java Bean Validation分组校验

        本文链接:https://www.haomeiwen.com/subject/wgcjoqtx.html