@ValidのSpringMvcが傍受どのように例外がスローされます

に対応するオブジェクトを使用しながらSpringMvc、較正パラメータは、@Valid注釈を使用することができます

@NotBlank(メッセージ= "ニックネームかもしれない空ではない")
@NotNull(メッセージ= "IDを空白にすることはできません")
@Pattern(
  メッセージ= "スペースを含めることはできません"
  、正規表現= "\\ S +"

などなど。

これは、すべてのパラメータが再びそれをチェックしているチェックしますので、それは例外のリストでもっと良かったはず、直接使用e.getMessage()は、出力が面倒なものがたくさんになります

 

良い解決策

@Validライブ注釈は例外があるチェック  org.springframework.validation.BindException

だから、あなたは追加することができ、異常インターセプタを特にこの異常を傍受し、解決するために、

次のように:

パッケージcn.jiashubing.config; 

輸入cn.jiashubing.result.ResultModel;
輸入org.springframework.validation.BindException。
輸入org.springframework.validation.ObjectError。
輸入org.springframework.web.bind.annotation.ControllerAdvice。
輸入org.springframework.web.bind.annotation.ExceptionHandler。
輸入org.springframework.web.bind.annotation.ResponseBody。

輸入はjava.util.List; 

/ ** 
 * @authorのjiashubing 
 * @since 2019年6月17日
  * / 
@ControllerAdvice 
パブリック クラスBingExceptionHandler {

    @ExceptionHandler(。はBindException クラス
    @ResponseBody 
    公共ResultModel handleBindException(例外E){
         // プリントの検証は、すべてのエラーメッセージを生きる 
        のStringBuilder SB = 新新のStringBuilder( "エラーパラメータ:[" ); 
        リスト <ObjectError>リスト= (( ;はBindException)E).getAllErrors()
         のためのリスト){(ObjectError項目
            sb.append(item.getDefaultMessage())アペンド( '' ); 
        } 
        sb.deleteCharAt(sb.length() - 1 )、
        SB .append( ']' ); 

        文字列MSG =sb.toString();
        返す 新しい ResultModel(、MSG)。
    } 

}

 

オリジナルの記事は、歓迎転載し、ソースを明記してください!

 

おすすめ

転載: www.cnblogs.com/acm-bingzi/p/springmvc_valid.html