参考:[Validated数据校验,看这一篇就够了_validated校验-CSDN博客](https://blog.csdn.net/weixin_43990804/article/details/112974137) 参考:[@Validated和@Valid校验参数、级联属性、List - 简书 (jianshu.com)](https://www.jianshu.com/p/17323904fd72) ## 校验集合 如果请求体直接传递了json数组给后台,并希望对数组中的每个元素对象都进行参数校验。此时,如果我们直接使用java.util.Collection下的list或者set并加上 @Validated 或 @Valid 来接收数据,参数校验并不会生效!如下这样: ```java //Controller接口 @PostMapping("batchAddUser) public R batchAddUser(@ResponseBody @Validated List userList) { //do something } ``` **方法1:自定义集合类,如: ```java /** * 1、自定义List包装类,添加 @Valid 注解 */ @Setter @Getter public class ValidList implements List { @Delegate @Valid // 一定要加@Valid注解 private List list = new LinkedList<>(); /** * @Delegate注解受lombok版本限制,1.18.6以上版本可支持。 * Lombok委托该字段类型(或方法的返回类型)的所有公共方法,以及其父类型的方法,但所有以`java.lang.Object`声明的方法除外 */ } /** * 2、Controller接口,使用List包装类,并添加注解 @Validated */ @PostMapping("batchAddUser) public R batchAddUser(@ResponseBody @Validated ValidList userList) { //do something } /** * 普通的校验User类 */ public class User { @NotBlank(message="用户名不能为空") @Size(max=20, message="用户名不能超过20个字符") private String userName; @Min(value=0, message="年龄必须大于0") @Max(value=150, message="年龄不能超过150") private int age; @NotBlank(message="地址不能为空") @Size(max=255,message="地址长度不能超过255") private String address; } ``` **方法2:Controller类上添加注解 @Validated ```java /** * 1、Controller类上添加注解 @Validated * 2、请求接口参数添加 @Valid */ @Validated @RequestMapping("/demo") @RestController public class DemoController { @PostMapping("batchAddUser) public R batchAddUser(@ResponseBody @Valid List userList) { //do something } } ```