使用@Validated和@Valid 解決list校驗的問題
@Validated和@Valid 解決list校驗
在 Controller 類上 加上@Validated。在需要校驗的參數(shù)上加上 @Valid 。
就可以校驗list里的實體類的屬性

@validated驗證List參數(shù)
寫了個接口
@GetMapping("/do")
public int doSth(@RequestBody @Validated(MyGroup.class) List<Bean> myBean)
發(fā)現(xiàn)@validated完全沒用,但是用@valid可以,但是我要用分組功能必須用@validated,在stackOverflow上找到了解決方案:
在項目里添加一個ValidList類即可,此類通用,可以在全部由此需求的項目(jdk1.8)中添加,無需改動,有ValidList類之后只要將接口方法參數(shù)中的List改成ValidList即可:
@GetMapping("/do")
public int doSth(@RequestBody @Validated(MyGroup.class) ValidList<Bean> myBean)
注意:
如果你不用lombok,就把@Data注解去掉,給類中的list成員加上getter,setter方法即可
ValidList
import lombok.Data;
import javax.validation.Valid;
import java.util.*;
@Data
public class ValidList<E> implements List<E> {
@Valid
private List<E> 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<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);
}
}
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
- Java中的三種校驗注解的使用(@Valid,@Validated和@PathVariable)
- spring @Validated 注解開發(fā)中使用group分組校驗的實現(xiàn)
- Java參數(shù)校驗@Validated、@Valid介紹及使用詳解
- SpringBoot參數(shù)校驗之@Validated的使用詳解
- @Valid和@Validated注解校驗以及異常處理方式
- 使用@Validated注解進行校驗卻沒有效果的解決
- Spring 中@Validated 分組校驗的使用解析
- Spring利用@Validated注解實現(xiàn)參數(shù)校驗詳解
- JAVA校驗之@Valid和@Validated實踐指南
相關(guān)文章
java實現(xiàn)哈弗曼編碼與反編碼實例分享(哈弗曼算法)
本文介紹java實現(xiàn)哈弗曼編碼與反編碼實例,大家參考使用吧2014-01-01
Spring?MVC啟動之HandlerMapping作用及實現(xiàn)詳解
這篇文章主要為大家介紹了Spring?MVC啟動之HandlerMapping作用及實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03
Java中的NumberFormatException異常原因以及解決方案詳解
這篇文章主要介紹了Java中的NumberFormatException異常原因以及解決方案詳解,NumberFormatException 是 Java 中的一個異常類,通常在字符串轉(zhuǎn)換為數(shù)字的過程中發(fā)生,它表示一個無效的數(shù)字格式,即字符串無法被正確解析為數(shù)字,需要的朋友可以參考下2024-02-02
mybatis插入數(shù)據(jù)不返回主鍵id的可能原因及解決方式
這篇文章主要介紹了mybatis插入數(shù)據(jù)不返回主鍵id的可能原因及解決方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08
Java修飾符abstract與static及final的精華總結(jié)
abstract、static、final三個修飾符是經(jīng)常會使用的,對他們的概念必須非常清楚,弄混了會產(chǎn)生些完全可以避免的錯誤,比如final和abstract不能一同出現(xiàn),static和abstract不能一同出現(xiàn),下面我們來詳細了解2022-04-04
使用jdk1.8實現(xiàn)將list根據(jù)指定的值去分組的操作
這篇文章主要介紹了使用jdk1.8實現(xiàn)將list根據(jù)指定的值去分組的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10
盤點SpringBoot中@Async注解的遇到的坑點及解決辦法
SpringBoot是一個流行的Java開發(fā)框架,在異步編程方面,Spring Boot提供了@Async注解,它能夠讓方法異步執(zhí)行,然而,在使用@Async注解時,有一些潛在的坑需要注意,本文將深入探討Spring Boot中使用@Async注解時可能遇到的8大坑點,并提供相應(yīng)的解決方案2024-03-03

