@PostMapping(value = "complete")
public Vo complete(@Valid @RequestBody @Validated(CompleteTaskRequest.class) ValidList<CompleteTaskRequest> request, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return super.valid(bindingResult);
} }
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CompleteTaskRequest extends BaseContext implements Serializable { @NotBlank(message = "任务id不能为空")
private String taskId; }
import lombok.Data;

import javax.validation.Valid;
import java.util.*; @Data
public class ValidList<E> implements List<E> { @Valid
private List<E> list = new LinkedList<>(); @Override
public int size() {
return list.size();
} @Override
public boolean isEmpty() {
return list.isEmpty();
} @Override
public boolean contains(Object o) {
return list.contains(o);
} @Override
public Iterator<E> iterator() {
return list.iterator();
} @Override
public Object[] toArray() {
return list.toArray();
} @Override
public <T> T[] toArray(T[] a) {
return list.toArray(a);
} @Override
public boolean add(E e) {
return list.add(e);
} @Override
public boolean remove(Object o) {
return list.remove(o);
} @Override
public boolean containsAll(Collection<?> c) {
return list.containsAll(c);
} @Override
public boolean addAll(Collection<? extends E> c) {
return list.addAll(c);
} @Override
public boolean addAll(int index, Collection<? extends E> c) {
return list.addAll(index, c);
} @Override
public boolean removeAll(Collection<?> c) {
return list.removeAll(c);
} @Override
public boolean retainAll(Collection<?> c) {
return list.retainAll(c);
} @Override
public void clear() {
list.clear();
} @Override
public E get(int index) {
return list.get(index);
} @Override
public E set(int index, E element) {
return list.set(index, element);
} @Override
public void add(int index, E element) {
list.add(index, element);
} @Override
public E remove(int index) {
return list.remove(index);
} @Override
public int indexOf(Object o) {
return list.indexOf(o);
} @Override
public int lastIndexOf(Object o) {
return list.lastIndexOf(o);
} @Override
public ListIterator<E> listIterator() {
return list.listIterator();
} @Override
public ListIterator<E> listIterator(int index) {
return list.listIterator(index);
} @Override
public List<E> subList(int fromIndex, int toIndex) {
return list.subList(fromIndex, toIndex);
}
}

@ https://stackoverflow.com/questions/28150405/validation-of-a-list-of-objects-in-spring

@validated 验证 List 参数在spring中的更多相关文章

  1. Spring中的@Valid 和 @Validated注解你用对了吗

    1.概述 本文我们将重点介绍Spring中 @Valid和@Validated注解的区别 . 验证用户输入是否正确是我们应用程序中的常见功能.Spring提供了@Valid和@Validated两个注 ...

  2. Spring 中参数名称解析 - ParameterNameDiscoverer

    Spring 中参数名称解析 - ParameterNameDiscoverer Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.ht ...

  3. spring中的default-lazy-init参数和lazy-init

    在spring的配置中的根节点上有个  default-lazy-init="true"配置:   1.spring的default-lazy-init参数  此参数表示延时加载, ...

  4. Spring中,请求参数处理

    Spring中,Controller里,获取请求数据有多种情况 在使用@RequestParam的方式获取请求中的参数时, 如果没有设置required这个属性,或者主动设置为true,则意味着这个参 ...

  5. Spring官网阅读(十八)Spring中的AOP

    文章目录 什么是AOP AOP中的核心概念 切面 连接点 通知 切点 引入 目标对象 代理对象 织入 Spring中如何使用AOP 1.开启AOP 2.申明切面 3.申明切点 切点表达式 excecu ...

  6. Spring官网阅读(十七)Spring中的数据校验

    文章目录 Java中的数据校验 Bean Validation(JSR 380) 使用示例 Spring对Bean Validation的支持 Spring中的Validator 接口定义 UML类图 ...

  7. Spring中配置数据源的4种形式

    不管采用何种持久化技术,都需要定义数据源.Spring中提供了4种不同形式的数据源配置方式: spring自带的数据源(DriverManagerDataSource),DBCP数据源,C3P0数据源 ...

  8. Spring中文文档

    前一段时间翻译了Jetty的一部分文档,感觉对阅读英文没有大的提高(*^-^*),毕竟Jetty的受众面还是比较小的,而且翻译过程中发现Jetty的文档写的不是很好,所以呢翻译的兴趣慢慢就不大了,只能 ...

  9. Spring中配置数据源的4种形式(转)

    原文http://blog.csdn.net/orclight/article/details/8616103       不管采用何种持久化技术,都需要定义数据源.Spring中提供了4种不同形式的 ...

随机推荐

  1. CSS3 border-radius 圆角

    圆角border-radius,其css如下 IE9+支持(就是ie6,ie7,ie8都不支持),默认值是0,不继承,可以像下面那样设置4个角的值,也可以单独设置,如 border-top-left- ...

  2. redis 开启远程访问权限

    1 开启redis端口访问权限 redis默认的端口是6379,要远程访问redis服务,确保服务器上的6379端口打开. 1.1 查看打开的端口 /etc/init.d/iptables statu ...

  3. P2801 教主的魔法(分块入门)

    两个月之前听yyr学长讲的分块,感觉是个很神奇的暴力,但到现在还是懵的一匹 #include<bits/stdc++.h> using namespace std; ; int belon ...

  4. 一道B树的题目---先记一下, 还没看到B树

    D

  5. Flex弹性布局以及box-sizing

    (本篇内容代表本人理解,如有错误请指出!) box-sizing box-sizing 属性用于更改用于计算元素宽度和高度的默认的 CSS 盒子模型.可以使用此属性来模拟不正确支持CSS盒子模型规范的 ...

  6. Word技巧设置

    1.如何在Word中快速输入上下标 下标~~同时按住:Ctrl 和 =键: 上标~~同时按住:Ctrl 和 Shift 和 +键: 2.如何删除Word中产生的空白页 设置 段落 中的   固定值  ...

  7. Unity插件系列之二维码

    1.二维码常见的生成与识别途径 1.草料二维码 https://cli.im/text 2.在软件中实现生成和扫描二维码 使用zxing实现 zxing是一个用java写的开源项目,zxing.net ...

  8. 关于vue移动端的适配

    http://blog.csdn.net/z1712636234/article/details/77881685

  9. [NOI2017]泳池

    题目描述 有一个长为\(n\),高为1001的网格,每个格子有\(p\)的概率为1,\((1-p)\)的概率0,定义一个网格的价值为极大的全一矩形,且这个矩形的底要贴着网格的底,求这个网格的价值为\( ...

  10. 内核空间内存申请函数kmalloc kzalloc vmalloc的区别

    我们都知道在用户空间动态申请内存用的函数是 malloc(),这个函数在各种操作系统上的使用是一致的,对应的用户空间内存释放函数是 free().注意:动态申请的内存使用完后必须要释放,否则会造成内存 ...