基于@Valid和@Validated验证List集合的踩坑记录
作者:超负荷小生
这篇文章主要介绍了基于@Valid和@Validated验证List集合的踩坑记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
基于Springboot框架验证list只需要一下两步:
情况一、在Controller上添加@Validated注解
方法上添加@Valid注解,就能验证了
实体类:
情况二、只是用@Valid,并且不是SpringBoot2.0版本
首先编写ValidableList类
@Data public class ValidableList<E> implements List<E> { @Valid private List<E> list = new ArrayList<>() ; @Override public int size() { return list.size(); } @Override public boolean isEmpty() { return list.isEmpty(); } @Override public boolean contains(Object o) { return false; } @Override public Iterator<E> iterator() { return null; } @Override public Object[] toArray() { return new Object[0]; } @Override public <T> T[] toArray(T[] a) { return null; } @Override public boolean add(E e) { return false; } @Override public boolean remove(Object o) { return false; } @Override public boolean containsAll(Collection<?> c) { return false; } @Override public boolean addAll(Collection<? extends E> c) { return false; } @Override public boolean addAll(int index, Collection<? extends E> c) { return false; } @Override public boolean removeAll(Collection<?> c) { return false; } @Override public boolean retainAll(Collection<?> c) { return false; } @Override public void clear() { } @Override public E get(int index) { return null; } @Override public E set(int index, E element) { return null; } @Override public void add(int index, E element) { } @Override public E remove(int index) { return null; } @Override public int indexOf(Object o) { return 0; } @Override public int lastIndexOf(Object o) { return 0; } @Override public ListIterator<E> listIterator() { return null; } @Override public ListIterator<E> listIterator(int index) { return null; } @Override public List<E> subList(int fromIndex, int toIndex) { return null; } }
控制器改为
@PostMapping("/saveClasses") public R saveClasses(@RequestBody @Valid ValidableList<BaseClassVo> baseClasses){ baseclassService.saveBaseClasses(baseClasses); return R.ok(); }
本人在实验中
在SpringBoot中使用第二种方法一直报错,空指针异常。
后来发现Springboot可以将@Valid和@Validated两个注解混合使用,验证list集合并不是这样操作,而是第一种方法。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。