企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
分组校验应用场景:比如一个参数`age`,在进行新增时不能为空,但是在进行更新时可以为空。 **1. 创建分组接口** ```java public interface AddGroup { } public interface UpdateGroup { } ``` **2. 参数指定校验分组** ```java @Data public class Person { /** * 不指定分组 */ @NotBlank(message = "name不能为空") private String name; /** * 指定两个分组 */ @NotNull(message = "age不能为空", groups = {AddGroup.class, UpdateGroup.class}) private Integer age; /** * 只指定一个分组 */ @NotBlank(message = "gender不能为空", groups = UpdateGroup.class) private String gender; } ``` **3. 在 controller 指定校验分组** ```java @Validated @RestController public class PersonController { /** * 不指定分组 */ @PostMapping("/v1/person/getByAny") public String getByAny(@RequestBody @Validated Person person) { return "[getByAny]." + person; } /** * 指定 AddGroup 分组 */ @PostMapping("/v1/person/add") public String addPerson(@RequestBody @Validated(AddGroup.class) Person person) { return "[addPerson]." + person; } /** * 指定 UpdateGroup 分组 */ @PostMapping("/v1/person/update") public String updatePerson(@RequestBody @Validated(UpdateGroup.class) Person person) { return "[updatePerson]." + person; } } ``` **4. 测试结果** 1. 情况❶:约束注解与校验注解都不指定分组,或都指定分组,则被约束参数必须满足约束条件。 2. 情况❷:约束注解与校验注解只有其中一个指定分组,则被约束参数不受约束条件约束。