Engineering Note

プログラミングなどの技術的なメモ

Eclipse Springでmessages.propertiesの内容が表示されない

EclipseでSpringフレームワークの学習をしている際に、messages.propertiesに記載したメッセージが表示されず、デフォルトの英語メッセージが表示される際の対処法についてメモします。

 

 

実行環境

環境は以下になります。

 

  • OS:Windows10
  • Eclipse IDE:2020-06 (4.16.0)
  • Spring IDE: 3.9.13.202006180736-RELEASE

 

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)タブ -> クリーン

 

プロジェクトをクリーンしてもメッセージが表示されない

Eclipse IDE自体を再起動させます。

 

まとめ

上記エラーでいくらプロジェクトクリーンをしてもメッセージが表示されず、ファイルの記述ミスが無いかなど、30分程度時間を費やしました。

最終的にEclipse本体の再起動でmessages.properties内のメッセージを出力させることができました。

 

参考書籍

【後悔しないための入門書】Spring解体新書 Java入門のあとはこれを学ぶべき: Spring Boot2で実際に作って学べる!Spring Security、Spring JDBC、Spring MVC、Spring Test、Spring MyBatisなど多数解説!