SpringBoot 数据基础校验_ 分组校验 【Group Validate】


SpringBoot 允许对同一个Bean进行不同条件的校验。

比如 某个情况下 这个Bean的 name 要求3-6位, 另一个情况下 name又要求 4-6位。

 

这种我们可以这样定义:

1、Bean中:

public class BeanValidationVO_Group {
    
    public static interface Group1 {}; public static interface Group2 {};

    @Length(min=3,max=6,message = "最好长度需要在3到6位之间",groups=Group1.class)
    @Length(min=4,max=6,message = "最好长度需要在4到6位之间",groups=Group2.class)
    @Zen_Field("姓名")
    private String name;

    @Min(5)
    @Max(15)
    //该字段不设置校验的group
    private int age;

    @NotNull
    @Size(min = 1,message = "不能为空",groups={Group1.class, Group2.class})
    private List<String> list;

}

 

2、controller中进行调用:

    /**
     *  这种只会包含 没定义 groups 的校验,此处用@Valid 和 @Validated 等效
     *  结果为: "[age:最小不能小于5]"
     */
    @RequestMapping("/testPost_Group_None")
    public IBaseResult testPost_Group_None(final HttpServletRequest request, @RequestBody @Validated BeanValidationVO_Group vo) {
    }

    /**
     *  这种只会包含校验定义时指定了 Group1 的校验
     *  结果为: "[姓名:最好长度需要在3到6位之间, list:不能为空]"
     */
    @RequestMapping("/testPost_Group1")
    public IBaseResult testPost_Group1(final HttpServletRequest request, @RequestBody @Validated(BeanValidationVO_Group.Group1.class) BeanValidationVO_Group vo) {
    }

    /**
     *  这种只会包含校验定义时指定了 Group2 的校验
     *  结果为: "[list:不能为空, 姓名:最好长度需要在4到6位之间]"
     */
    @RequestMapping("/testPost_Group2")
    public IBaseResult testPost_Group2(final HttpServletRequest request, @RequestBody @Validated(BeanValidationVO_Group.Group2.class) BeanValidationVO_Group vo) {
    }

    /**
     *  这种不会包含 没定义 groups 的校验,只会包含校验定义时指定了 Group1 或者 Group2 的校验
     *  结果为: "[姓名:最好长度需要在4到6位之间, list:不能为空, 姓名:最好长度需要在3到6位之间]"
     */
    @RequestMapping("/testPost_Group_All")
    public IBaseResult testPost_Group_All(final HttpServletRequest request, @RequestBody @Validated({BeanValidationVO_Group.Group1.class,BeanValidationVO_Group.Group2.class}) BeanValidationVO_Group vo) {
    }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM