导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 版权协议,转载请附上原文出处链接和本声明。