📔

SpringbootのErrorControllerにはPOSTの処理も必要

2021/08/10に公開

環境

Springboot 1.3.5

Java 8

やりたかったこと

アプリ内の例外を補足してエラー画面に飛ばしたかった。

ハマったこと

参考 URL のスライドを参考にして、ErrorController を実装したところ、GET で例外が発生した

場合は、想定通りエラー処理が行われるが、POST 中に例外が起きるとエラー画面どころか Tomcat のエラー画面

が表示された。

対策

`@RequestMapping(value = PATH)
public String errorGet(HttpServletRequest request, HttpServletResponse response) { 略 }

// これを追加した。
@RequestMapping(value = PATH, method = RequestMethod.POST))
public String errorPost(HttpServletRequest request, HttpServletResponse response) { 略 }

GET の時と、POST の時はそれぞれに対して RequestMapping を書かないと捕捉されない模様。

POST 時は、更新ボタンによる再 POST を防ぐため、エラー画面の URL に redirect させる実装にした。

参考

Spring Boot で Boot した後に作る Web アプリケーション基盤/spring-boot-application-infrastructure // Speaker Deck

https://speakerdeck.com/sinsengumi/spring-boot-application-infrastructure

Discussion