【Spring Boot】Controllerが正しく動かない原因

Spring Bootプロジェクトで画面遷移のハンドリングが出来なかった時のエラー内容と原因をメモ。


画面からフォームボタンのPOSTリクエスト時。

リソースに辿り着けない。。


Controllerのソース

POSTリクエストでconfirm.htmlへ遷移させたい。

 

エラーの原因 : Controllerのクラスファイルの配置場所が正しくない。

Controllerをはじめ、Spring Bootプロジェクトで使用する全てのクラスファイルは
プロジェクトのmainメソッド(SpringApplication.run)がある起動クラスと同一パッケージ
もしくはその配下に配置しないと正しくロードされない。


パッケージの配置が正しくない状態

プロジェクトの起動クラスのパッケージと異なるパッケージに
Controllerのクラスファイルがある。


パッケージを正しい位置に変更

プロジェクトを再起動し、画面側の送信ボタンでControllerへPOSTリクエストする。

プロジェクト内でコンソールのログを確認する。
(一部のみ抜粋)
Controllerのクラスファイル名「MainController」で文字列検索

Mapped “{[/],methods=[GET]}” onto public java.lang.String example.presentation.controller.MainController.index()
2018-10-12 10:20:09.838 INFO 1002 — [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped “{[/confirm],methods=[POST]}” onto public java.lang.String example.presentation.controller.MainController.confirm()

Controllerクラスがロードされ、メソッドの呼び出しも確認できる。

エラーの落とし穴

プロジェクト起動後 http://localhost:8080/で初回アクセス時、
Controllerがロードされていなかった場合、
ファイル名がindex.htmlのテンプレートを自動で返す仕様となっているため
エラーに気付きにくかった。

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください