SpringMvc @Valid如何拋出攔截異常
SpringMvc中,校驗(yàn)參數(shù)可以使用 @Valid 注解,同時(shí)在相應(yīng)的對(duì)象里使用
@NotBlank( message = "昵稱不能為空") @NotNull( message = "ID不能為空") @Pattern( message = "不能包括空格" , regexp = "\\S+" )
等等。
這個(gè)校驗(yàn)會(huì)把所有的參數(shù)都校驗(yàn)一遍,所以它的異常里會(huì)好些列表,直接使用e.getMessage(),會(huì)輸出很多累贅的東西
一個(gè)好的解決辦法
@Valid 注解校驗(yàn)住的異常是 org.springframework.validation.BindException
所以可以添加一個(gè)異常攔截器,專門攔截,并且解析這種異常
具體如下:
package cn.jiashubing.config;
import cn.jiashubing.result.ResultModel;
import org.springframework.validation.BindException;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
/**
* @author jiashubing
* @since 2019/6/17
*/
@ControllerAdvice
public class BingExceptionHandler {
@ExceptionHandler(BindException.class)
@ResponseBody
public ResultModel handleBindException(Exception e) {
//打印校驗(yàn)住的所有的錯(cuò)誤信息
StringBuilder sb = new StringBuilder("參數(shù)錯(cuò)誤:[");
List<ObjectError> list = ((BindException) e).getAllErrors();
for (ObjectError item : list) {
sb.append(item.getDefaultMessage()).append(',');
}
sb.deleteCharAt(sb.length() - 1);
sb.append(']');
String msg = sb.toString();
return new ResultModel(false, msg);
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java基礎(chǔ)學(xué)習(xí)之字符串知識(shí)總結(jié)
今天帶著大家復(fù)習(xí)一下Java基礎(chǔ)知識(shí)-字符串,文中介紹的非常詳細(xì),對(duì)初步學(xué)習(xí)Java或者復(fù)習(xí)Java的小伙伴們都很有幫助喲,需要的朋友可以參考下2021-05-05
springboot-jpa的實(shí)現(xiàn)操作
這篇文章主要介紹了springboot-jpa的實(shí)現(xiàn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03
Spring容器擴(kuò)展機(jī)制的實(shí)現(xiàn)原理
這篇文章主要介紹了Spring容器擴(kuò)展機(jī)制的實(shí)現(xiàn)原理,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-11-11
前端如何調(diào)用后端接口進(jìn)行數(shù)據(jù)交互詳解(axios和SpringBoot)
一般來講前端不會(huì)給后端接口,而是后端給前端接口的情況比較普遍,下面這篇文章主要給大家介紹了關(guān)于前端如何調(diào)用后端接口進(jìn)行數(shù)據(jù)交互的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-03-03
詳解Spring Boot 使用Spring security 集成CAS
本篇文章主要介紹了詳解Spring Boot 使用Spring security 集成CAS,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
java編程實(shí)現(xiàn)基于UDP協(xié)議傳輸數(shù)據(jù)的方法
這篇文章主要介紹了java編程實(shí)現(xiàn)基于UDP協(xié)議傳輸數(shù)據(jù)的方法,較為詳細(xì)的分析了UDP協(xié)議的原理及Java編程實(shí)現(xiàn)數(shù)據(jù)傳輸客戶端與服務(wù)器端的相關(guān)技巧,需要的朋友可以參考下2015-11-11

