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
https://speakerdeck.com/sinsengumi/spring-boot-application-infrastructure

comments powered by Disqus