Spring Boot(MVC)でvalidationのエラーメッセージを日本語化する
Posted on January 31, 2015 at 23:32 (JST)
Spring Boot(MVC)でエラーメッセージをカスタマイズする方法を記載します。
作成したサンプルはGithubにて公開しています。[ simple-mvc-app ]
今回は下記の構成となるよう、ファイルを新規に作成しました。
MessageConfig: validationでエラーになった場合に使用するファイルの指定などを行います
messages_ja.properties: 表示したい(日本語化した)メッセージを記載します
messages.properties: ロケールが指定されていない場合、または指定されたロケールが存在しない場合に参照されるファイルです。(無くても大丈夫です)
※ Resource Bundle 'messages' はディレクトリではなく、IDEAが勝手に表示しているだけの情報です。
ファイル作成
まずはMessageConfigファイルから。
ファイル名は任意のもので大丈夫です。
[ MessageConfig.java ]
@Configuration
/* !! ※2015/2/2訂正 webjars:bootstrapが効かなくなるので除去 !!
@EnableWebMvc //(※1)
*/
public class MessageConfig extends WebMvcConfigurerAdapter { //(※1)
@Bean
ReloadableResourceBundleMessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasenames("classpath:i18n/messages"); //(※2)
messageSource.setCacheSeconds(0);
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
@Bean
public LocalValidatorFactoryBean validator() {
LocalValidatorFactoryBean localValidatorFactoryBean = new LocalValidatorFactoryBean();
localValidatorFactoryBean.setValidationMessageSource(messageSource());
return localValidatorFactoryBean;
}
@Override
public Validator getValidator() { //(※3)
return validator();
}
}
※1、3: MVCで任意のファイルを読み込ませるために必要な設定です。
※2: カンマ区切りで複数ファイルを指定可能です。
続いて、メッセージプロパティファイルを見ます。
[ messages_ja.properties ]
javax.validation.constraints.NotNull.message = 入力必須項目です
javax.validation.constraints.Size.message = {min}〜{max}文字で入力してください
org.hibernate.validator.constraints.Email.message = アドレスの形式が不正です
org.hibernate.validator.constraints.NotBlank.message = 入力必須項目です
アプリケーションで使用するものだけ記載すればOKです。
validationにて使用するプロパティのkeyを変更する方法はありますが、めんどいのでデフォルトのままです。
ここに記載していないものについては、同フォルダに用意したmessages.properties、もしくはライブラリ(jar)内に用意されているデフォルト値が使用されます。
なお、hibernate-validatorのデフォルトメッセージファイルはGithubにて参照出来ます。
以上です。