0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ControllerAdviceの設定ミスでCircular view path のエラーが発生してしまった話

Posted at

はじめに

Spring Webの@ControllerAdviceを使用した例外のハンドリングをしようとしたらCircular view pathのエラーになってしまったので原因と解消方法を記載します。

対象のコード

エラーが起こった際のコードがこちらです。
@ControllerAdviceを久しぶりに行ったのもあり、こんなコードになっていました。

@ControllerAdvice
class ExceptionHandler {
    
    @ExceptionHandler(Exception::class)
    @ResponseStatus(HttpStatus.NOT_FOUND)
    fun handleException(e: Exception): String {
        return "internal server error."
    }
}

そして、このコード部分を通るようなリクエストを行うと以下のエラーが発生しました。

jakarta.servlet.ServletException: Circular view path [internal server error.]: would dispatch back to the current handler URL [/api/internal server error.] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)

原因と解消方法

この原因は、@ResponseBodyを付与していなかったためです。
そのため、handleExceptionからの返却値をSpring MVCがビュー名として解釈し、そのURLに再度ディスパッチしようとして無限ループになっていたのです。
@ResponseBodyを付与する、またはStringではなくResponsEntityを返却するようにすれば、このエラーは発生せず、適切にハンドリングされました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?