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

网友投稿 1671 2022-11-30

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

使用@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) List myBean)

发现@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.*;

@Data

public class ValidList implements List {

@Valid

private List 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 iterator() {

return list.iterator();

}

@Override

public Object[] toArray() {

return list.toArray();

}

@Override

public 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 lisnEjCct.set(index, element);

}

@Override

public void add(int index, E element) {

list.add(index, element);

}

@Override

public E remove(int index) {

nEjCc 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 listIterator() {

return list.listIterator();

}

@Override

public ListIterator listIterator(int index) {

return list.listIterator(index);

}

@Override

public List subList(int fromIndex, int toIndex) {

return list.subList(fromIndex, toIndex);

}

}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SonarQube 09 多分支代码扫描
下一篇:prometheus 配置热更新以及更改副本数高可用
相关文章

 发表评论

暂时没有评论,来抢沙发吧~