使用@Validated和@Valid|使用@Validated和@Valid 解决list校验的问题
目录
- @Validated和@Valid 解决list校验
- @validated验证List参数
- 写了个接口
- ValidList
@Validated和@Valid 解决list校验 在 Controller 类上 加上@Validated。在需要校验的参数上加上 @Valid 。
就可以校验list里的实体类的属性
文章图片
@validated验证List参数
写了个接口
@GetMapping("/do")public int doSth(@RequestBody @Validated(MyGroup.class) ListmyBean)
【使用@Validated和@Valid|使用@Validated和@Valid 解决list校验的问题】发现@validated完全没用,但是用@valid可以,但是我要用分组功能必须用@validated,在stackOverflow上找到了解决方案:
在项目里添加一个ValidList类即可,此类通用,可以在全部由此需求的项目(jdk1.8)中添加,无需改动,有ValidList类之后只要将接口方法参数中的List改成ValidList即可:
@GetMapping("/do")public int doSth(@RequestBody @Validated(MyGroup.class) ValidListmyBean)
注意:
如果你不用lombok,就把@Data注解去掉,给类中的list成员加上getter,setter方法即可
ValidList
import lombok.Data; import javax.validation.Valid; import java.util.*; @Datapublic class ValidListimplements 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 extends E> c) {return list.addAll(c); }@Overridepublic boolean addAll(int index, Collection extends E> 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); }}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- 急于表达——往往欲速则不达
- 第三节|第三节 快乐和幸福(12)
- 20170612时间和注意力开销记录
- 2.6|2.6 Photoshop操作步骤的撤消和重做 [Ps教程]
- 对称加密和非对称加密的区别
- 眼光要放高远
- 樱花雨
- 由浅入深理解AOP
- 前任
- 【译】20个更有效地使用谷歌搜索的技巧