2017-11-30 5 views
0

私は現在、Springアプリケーションのすべてのエンドポイントでこのようなことがあります。前処理でSpring検証エラーが発生する可能性があります

if(bindingResult.hasErrors()){ 
    return new ResponseEntity<>(BAD_REQUEST); 
} 

私はこれをhttpインターセプタに移動して、1つの場所に必要なだけです。しかし、私はpreHandleのバインディング結果からすべてのエラーを取得する方法を見つけることができません。

preHandleで、または実際のルートを開始する前に、検証エラーをどのように受け取るのですか?

+0

春バージョンの一部として、いくつかのサンプルコード

コントローラ

@PostMapping public SomeReturnObject someMethod(@Valid SomeCommand command) { // logic - no longer contains checks for binding result errors } 

で、あなたが一箇所にControllerAdviceのいずれかの例外をキャプチャすることができ、あなたはでの例を確認することができます[例外Springハンドラ](https://www.journaldev.com/2651/spring-mvc-exception-handling-controlleradvice-exceptionhandler-handlerexceptionresolver) –

答えて

2

あなたが探していると思うことを達成する方法の1つは、メソッドパラメータとしてBindingResultを含まないことです。与えられたBindingResultがメソッド引数として含まれていない場合、SpringはBindException例外をスローします。 ExceptionHandlerを定義することができます。通常、これらを@ControllerAdvice内に配置して、必要に応じて例外を処理します。以下はControllerAdvice

使用している
+0

もし私がそれをベースパスに含めるだけであれば、それは自動的にすべてのバインディング例外を傍受します?または、何とかControllerAdviceを設定する必要がありますか? – Jackie

+0

ベースパスにそれを含めるとはどういう意味なのか分かりませんが、コントローラのアドバイスの例を更新しました。基本的には、@ControllerAdviceを持つクラスの注釈になります –

関連する問題