EclipseでSpringフレームワークの学習をしている際に、messages.propertiesに記載したメッセージが表示されず、デフォルトの英語メッセージが表示される際の対処法についてメモします。
- 実行環境
- messages.propertiesとは
- messages.propertiesファイルを配置してもメッセージが出力されない
- プロジェクトをクリーンしてもメッセージが表示されない
- まとめ
- 参考書籍
実行環境
環境は以下になります。
messages.propertiesとは
Springではデータバインド時に型やフォーマットが不正であった場合、以下のようにhtmlファイル内に記載すると、エラーメッセージを表示させることができます。
<ul> <li th:each="error:${#fields.detailedErrors()}"> <span th:text="${error.message}">Error message</span> </li> </ul
またデフォルトでは以下のような英語のメッセージが表示されます。
Failed to convert property value of type java.lang.String to required type int for property age; nested exception is java.lang.NumberFormatException: For input string: "hoge"
上記のメッセージではユーザに対してどこがどのように不正なのかがわかりづらい為、このメッセージを編集することができます。
その際に利用するものが、messages.properties
ファイルでありこれをsrc/main/resources
ディレクトリ直下に配置し、対象のフィールド値を指定してメッセージ内容を編集することが可能になります。
messages.propertiesファイルを配置してもメッセージが出力されない
まずファイルを編集し、保存、再起動します。
(プロジェクト作成時にDevToolを追加している場合、保存した時点で自動的に再起動します)
再起動後にデフォルトメッセージのままの場合、以下の手順でプロジェクトをクリーンにします。
プロジェクト(P)タブ -> クリーン
プロジェクトをクリーンしてもメッセージが表示されない
まとめ
上記エラーでいくらプロジェクトクリーンをしてもメッセージが表示されず、ファイルの記述ミスが無いかなど、30分程度時間を費やしました。
最終的にEclipse本体の再起動でmessages.properties内のメッセージを出力させることができました。