小編這次要給大家分享的是@Validated怎么驗證List集合,文章內(nèi)容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

創(chuàng)新互聯(lián)自2013年起,先為玉田等服務(wù)建站,玉田等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為玉田企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
在開發(fā)時發(fā)現(xiàn),@Validated只能驗證單個實體類,在驗證List集合時則不生效
@PostMapping(value="/test")
public ApiResult getRepaymentPlan(@RequestBody @Validated List<Test> repaymentPlanVOs){
}經(jīng)過查資料得知,@valid是可以使用的,我們自定義一個ValidList類來替換List就可以達(dá)到驗證的目的,話不多說,直接看代碼
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);
}
public List<E> getList() {
return list;
}
public void setList(List<E> list) {
this.list = list;
}
}然后用ValidList類替換我們的List即可
@PostMapping(value="/test")
public ApiResult getRepaymentPlan(@RequestBody @Validated ValidList<Test> repaymentPlanVOs){
}補充,將@Validated返回的異常替換為我們自定義的json格式并返回,只需在當(dāng)前controller類里注入一個異常bean,并用@ExceptionHandler來捕獲對應(yīng)的異常即可。MethodArgumentNotValidException為@Validated返回的異常,這里只需要捕獲對應(yīng)異常即可
@ExceptionHandler(value = MethodArgumentNotValidException.class)
@ResponseBody
public Map<String,Object> allExceptionHandler(MethodArgumentNotValidException e){
Map<String,Object> result = new HashMap<String,Object>();
MethodArgumentNotValidException ex = (MethodArgumentNotValidException)e;
BindingResult bindingResult = ex.getBindingResult();
StringBuilder errMsg = new StringBuilder(bindingResult.getFieldErrors().size() * 16);
errMsg.append("Invalid request:");
for (int i = 0 ; i < bindingResult.getFieldErrors().size() ; i++) {
if(i > 0) {
errMsg.append(",");
}
FieldError error = bindingResult.getFieldErrors().get(i);
errMsg.append(error.getField()+":"+error.getDefaultMessage());
}
result.put("res_code","400");
result.put("res_mess",errMsg.toString());
return result;
}看完這篇關(guān)于@Validated怎么驗證List集合的文章,如果覺得文章內(nèi)容寫得不錯的話,可以把它分享出去給更多人看到。
當(dāng)前題目:@Validated怎么驗證List集合
當(dāng)前路徑:http://www.jbt999.com/article30/gseoso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、外貿(mào)網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站、網(wǎng)頁設(shè)計公司、小程序開發(fā)、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)