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