spring-boot-starter-web包中校验 @Valid 对List集合提示处理

  • Post author:
  • Post category:其他


导web包后没有@Valid的包,需重新导入validation包

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

我们随便建一个提交表单类来模拟提交操作

@Data
public class UserForm {

    @NotNull(message = "不能为空!")
    private String name;

    @NotNull(message = "年龄为空!")
    @Max(value = 150,message = "大于150岁")
    private Integer age;
}

1.我们先看直接使用@Valid对单个表单对象进行提示处理。

测试结果:名称不能为空、年龄不能为空这是符合我们预期的

2.换成提交表单的集合类进行提示处理

测试结果:直接通过了接口,名称、年龄没有进行提示这是不符合我们预期的。

3.为了解决集合中校验问题我们重写一个扩展类实现集合校验处理。

测试结果:集合中多个集合都进行提示了,名称、年龄的提示,这是符合我们预期的。

ValidAbleList扩展类代码为:

public class ValidAbleList<E> implements List<E> {

    @Valid
    private List<E> list = new ArrayList<>();

    public List<E> getList() {
        return list;
    }

    public void setList(List<E> list) {
        this.list = list;
    }

    @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);
    }
}



版权声明:本文为weixin_44519874原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。