使用@Validated和@Valid|使用@Validated和@Valid 解决list校验的问题

目录

  • @Validated和@Valid 解决list校验
  • @validated验证List参数
    • 写了个接口
    • ValidList

@Validated和@Valid 解决list校验 在 Controller 类上 加上@Validated。在需要校验的参数上加上 @Valid 。
就可以校验list里的实体类的属性
使用@Validated和@Valid|使用@Validated和@Valid 解决list校验的问题
文章图片


@validated验证List参数
写了个接口
@GetMapping("/do")public int doSth(@RequestBody @Validated(MyGroup.class) List myBean)

【使用@Validated和@Valid|使用@Validated和@Valid 解决list校验的问题】发现@validated完全没用,但是用@valid可以,但是我要用分组功能必须用@validated,在stackOverflow上找到了解决方案:
在项目里添加一个ValidList类即可,此类通用,可以在全部由此需求的项目(jdk1.8)中添加,无需改动,有ValidList类之后只要将接口方法参数中的List改成ValidList即可:
@GetMapping("/do")public int doSth(@RequestBody @Validated(MyGroup.class) ValidList myBean)

注意:
如果你不用lombok,就把@Data注解去掉,给类中的list成员加上getter,setter方法即可

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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

    推荐阅读