📔
SpringbootのErrorControllerにはPOSTの処理も必要
環境
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
Discussion