MissingRequestHeaderExceptionを処理している例外ハンドラーはどれですか。

ng.newbie:

リクエストヘッダー検証を導入しようとしている大規模なSpring Bootコードベースに取り組んでいます。

これは私のサンプルコントローラーです:

import javax.validation.constraints.Size;

import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Validated
@RequestMapping("/abc/test/v1")
public class TestController {

    @GetMapping("/testMethod")
    public String testMethod(@RequestHeader 
            @Size(min = 10, message = "Not valid header") String foo) {
        return foo;
    }

}

そしてこれは@ControllerAdviceエラーハンドラです:

import java.util.LinkedList;
import java.util.List;

import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;

import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;

import com.abc.test.exception.RequestParamValidationException;

@SuppressWarnings({ "unchecked", "rawtypes" })  
@ControllerAdvice
@RequestMapping( produces = MediaType.APPLICATION_JSON_VALUE)
public class ValidationExceptionHandler extends ResponseEntityExceptionHandler {

    @ExceptionHandler(ConstraintViolationException.class)
    public ResponseEntity<RequestParamValidationException> handleConstraintVoilationexception(ConstraintViolationException ex, WebRequest req) {
        List<String> details = new LinkedList<>();

        for(ConstraintViolation<?> violation : ex.getConstraintViolations()) {
            details.add(violation.getMessage());
        }

        RequestParamValidationException exception = new RequestParamValidationException
                ("Request Param Validation Failed", details);

        return new ResponseEntity(exception, HttpStatus.BAD_REQUEST);
    }
}

これは私のプロジェクトの最小限の再現可能な例ですが、他にエラーハンドラーはありません。

私が取得する必要があるにもかかわらずConstraintVoilationexception、しかし、MissingRequestHeaderException私は私のログから見ることができるように、私は宣言されていない謎のエラーハンドラによって処理され続けます。

2020-06-08 10:49:10.655  WARN 3180 --- [0.0-8080-exec-1] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [org.springframework.web.bind.MissingRequestHeaderException: Missing request header 'foo' for method parameter of type String]

例外ハンドラに到達しません。

この不可思議な例外ハンドラとは何ですか?

ありがとう。

ボリス・チストフ:

まず、ValidationExceptionHandlerの順序を定義する必要があります。これは注釈で行われます @Order(Ordered.HIGHEST_PRECEDENCE)

次に、MissingRequestHeaderExceptionはサブクラスなので、メソッドをオーバーライドする必要がありますServletRequestBindingException

    @Override
    protected ResponseEntity<Object> handleServletRequestBindingException(
        final ServletRequestBindingException ex,
        final HttpHeaders headers,
        final HttpStatus status,
        final WebRequest request
    ) {
        return super.handleServletRequestBindingException(ex, headers, status, request);
    }

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Thread.sleep()の呼び出し時の未処理の例外のコンパイルエラーを修正するにはどうすればよいですか?

分類Dev

Springのカスタム例外ハンドラーの内部からスローされた例外を処理する方法はありますか?

分類Dev

何がラップされているかに関係なく、「a」タグがクリックされたときにクリックハンドラーを処理するにはどうすればよいですか?

分類Dev

GoldenGateの「Kafka」/「Kafkaconnect」ハンドラーでOracleの10進型を処理するにはどうすればよいですか?

分類Dev

パンダでハイパーリンク/ URLを使用してExcelファイルを処理するにはどうすればよいですか?

分類Dev

処理していないときに例外を出力するにはどうすればよいですか?

分類Dev

使用人ハンドラモナド内で例外を処理する方法は?

分類Dev

hangfireで処理中のすべてのバックグラウンドジョブを停止して削除するにはどうすればよいですか?

分類Dev

コマンドラインで複数の引数を受け入れて正しく処理するにはどうすればよいですか?

分類Dev

例外処理を使用してHaskellで「retryForever」関数を作成するにはどうすればよいですか?

分類Dev

ラムダ関数なしでReactNativeの単一ハンドラーによっていくつかのTextInputを処理する方法は?

分類Dev

PowerShellのこのコードに例外処理を追加するにはどうすればよいですか?

分類Dev

無効な例外ハンドラルーチンを処理するにはどうすればよいですか?

分類Dev

SpreadsheetApp.openById()を使用しているときにスローされる例外を処理するにはどうすればよいですか?

分類Dev

例外エラーを処理した後にメインフォームが閉じないようにするにはどうすればよいですか?

分類Dev

エラーハンドラが非同期ミドルウェアからスローされた例外を処理しないのはなぜですか?

分類Dev

jspファイルにエラーを表示してコントローラーで例外を処理するにはどうすればよいですか?

分類Dev

フォントがサポートされていないときにシステムがハングしないように例外ハンドラーを作成するにはどうすればよいですか?

分類Dev

PageHandlerFactoryによって処理されるASP.NETのすべての要求にイベントハンドラーを追加するにはどうすればよいですか?

分類Dev

バックグラウンドスレッドがデータベースへのデータを処理しているときにDB.closeを処理するにはどうすればよいですか?

分類Dev

例外ハンドラアノテーションを使用して応答本文にエラーコンテンツを書き込むことにより、HttpMediaTypeNotAcceptableExceptionを処理するにはどうすればよいですか?

分類Dev

`trap`を介して設定したハンドラーを使用して、bashインタラクティブシェルがシグナルを処理することをテストするにはどうすればよいですか?

分類Dev

未処理の例外ハンドラーを使用すると、例外ディスパッチはどのように変化しますか?

分類Dev

MVVMでイベントを処理しているときにイベントハンドラーの2番目のパラメーターを送信するにはどうすればよいですか?

分類Dev

ポーカークライアントを作成していますが、例外処理をよりクリーンにするにはどうすればよいですか?

分類Dev

Pythonでキーエラー例外を効果的に処理するにはどうすればよいですか?

分類Dev

いくつかの静的フォルダーを使用してTornadoで静的ファイルハンドラーを処理するにはどうすればよいですか?

分類Dev

例外ハンドラとして `other`を使用してパンダデータフレームでtxtベースのキーワードエクストラクタをより効果的に作成するにはどうすればよいですか?

分類Dev

コントローラメソッドで重複するnullチェックと例外処理を排除するにはどうすればよいですか?

Related 関連記事

  1. 1

    Thread.sleep()の呼び出し時の未処理の例外のコンパイルエラーを修正するにはどうすればよいですか?

  2. 2

    Springのカスタム例外ハンドラーの内部からスローされた例外を処理する方法はありますか?

  3. 3

    何がラップされているかに関係なく、「a」タグがクリックされたときにクリックハンドラーを処理するにはどうすればよいですか?

  4. 4

    GoldenGateの「Kafka」/「Kafkaconnect」ハンドラーでOracleの10進型を処理するにはどうすればよいですか?

  5. 5

    パンダでハイパーリンク/ URLを使用してExcelファイルを処理するにはどうすればよいですか?

  6. 6

    処理していないときに例外を出力するにはどうすればよいですか?

  7. 7

    使用人ハンドラモナド内で例外を処理する方法は?

  8. 8

    hangfireで処理中のすべてのバックグラウンドジョブを停止して削除するにはどうすればよいですか?

  9. 9

    コマンドラインで複数の引数を受け入れて正しく処理するにはどうすればよいですか?

  10. 10

    例外処理を使用してHaskellで「retryForever」関数を作成するにはどうすればよいですか?

  11. 11

    ラムダ関数なしでReactNativeの単一ハンドラーによっていくつかのTextInputを処理する方法は?

  12. 12

    PowerShellのこのコードに例外処理を追加するにはどうすればよいですか?

  13. 13

    無効な例外ハンドラルーチンを処理するにはどうすればよいですか?

  14. 14

    SpreadsheetApp.openById()を使用しているときにスローされる例外を処理するにはどうすればよいですか?

  15. 15

    例外エラーを処理した後にメインフォームが閉じないようにするにはどうすればよいですか?

  16. 16

    エラーハンドラが非同期ミドルウェアからスローされた例外を処理しないのはなぜですか?

  17. 17

    jspファイルにエラーを表示してコントローラーで例外を処理するにはどうすればよいですか?

  18. 18

    フォントがサポートされていないときにシステムがハングしないように例外ハンドラーを作成するにはどうすればよいですか?

  19. 19

    PageHandlerFactoryによって処理されるASP.NETのすべての要求にイベントハンドラーを追加するにはどうすればよいですか?

  20. 20

    バックグラウンドスレッドがデータベースへのデータを処理しているときにDB.closeを処理するにはどうすればよいですか?

  21. 21

    例外ハンドラアノテーションを使用して応答本文にエラーコンテンツを書き込むことにより、HttpMediaTypeNotAcceptableExceptionを処理するにはどうすればよいですか?

  22. 22

    `trap`を介して設定したハンドラーを使用して、bashインタラクティブシェルがシグナルを処理することをテストするにはどうすればよいですか?

  23. 23

    未処理の例外ハンドラーを使用すると、例外ディスパッチはどのように変化しますか?

  24. 24

    MVVMでイベントを処理しているときにイベントハンドラーの2番目のパラメーターを送信するにはどうすればよいですか?

  25. 25

    ポーカークライアントを作成していますが、例外処理をよりクリーンにするにはどうすればよいですか?

  26. 26

    Pythonでキーエラー例外を効果的に処理するにはどうすればよいですか?

  27. 27

    いくつかの静的フォルダーを使用してTornadoで静的ファイルハンドラーを処理するにはどうすればよいですか?

  28. 28

    例外ハンドラとして `other`を使用してパンダデータフレームでtxtベースのキーワードエクストラクタをより効果的に作成するにはどうすればよいですか?

  29. 29

    コントローラメソッドで重複するnullチェックと例外処理を排除するにはどうすればよいですか?

ホットタグ

アーカイブ