質問編集履歴

2 誤字修正

hikage

hikage score 22

2017/12/18 12:00  投稿

SpringBoot:バリデーションメッセージの日本語化について
SpringBootでフォームエンティティのプロパティ(Integer)に対して、
数字以外の文字列を送信した際に、Springのデフォルトのエラーメッセージが
表示されるのですが、それを日本語化(デフォルトを日本語に)したいです。
下記の通りクラスパス配下にメッセージ設定ようのファイルを配置したのですが、
読み込めていないような気がしています。
情報など足りないところあるかもしれませんがわかる範囲でご教授
いただけませんでしょうか?
```text
# src/main/resources/messages_ja.properties
typeMismatch.Integer={0} は数字で入力してください
```
```Java
// メッセージ設定クラス
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.validation.Validator;
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
public class MessageConfig extends WebMvcConfigurerAdapter
{
   @Autowired
   private MessageSource messageSource;
   @Bean
   public LocalValidatorFactoryBean validator()
   {
       LocalValidatorFactoryBean localValidatorFactoryBean = new LocalValidatorFactoryBean();
       localValidatorFactoryBean.setValidationMessageSource(messageSource);
       return localValidatorFactoryBean;
   }
   @Override
   public Validator getValidator()
   {
       return validator();
   }
}
```
```Java
// FORMクラス
import javax.validation.constraints.Pattern;
import org.hibernate.validator.constraints.NotEmpty;
import lombok.Data;
@Data
public class SampleForm {
   private Integer reg_emp_num;
  
   ...
}
```
↓を日本語(設定した内容)にしたい
```html
<!--画面に表示されるデフォルトエラーメッセージ -->
Failed to convert property value of type [java.lang.String] to required type [java.lang.Integer] for property 'reg_emp_num'; nested exception is java.lang.NumberFormatException: For input string: "あ"
```
補足:プロパティファイルにorg.hibernate.validator.constraints.NotEmpty.message=を記入すれば、@NotEmptyをセットしたフィールドに対して設定したメッセージがあたりますが、
補足:プロパティファイルにorg.hibernate.validator.constraints.NotEmpty.message={任意のメッセージ}を記入すれば、@NotEmptyをセットしたフィールドに対して設定したメッセージがあたりますが、
SpringBoot 1.4.1
Jdk 1.8.0_121
MySQL 5.6.27
  • Java

    19091 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Spring Boot

    1038 questions

    Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

1 補足情報の追加

hikage

hikage score 22

2017/12/18 11:59  投稿

SpringBoot:バリデーションメッセージの日本語化について
SpringBootでフォームエンティティのプロパティ(Integer)に対して、
数字以外の文字列を送信した際に、Springのデフォルトのエラーメッセージが
表示されるのですが、それを日本語化(デフォルトを日本語に)したいです。
下記の通りクラスパス配下にメッセージ設定ようのファイルを配置したのですが、
読み込めていないような気がしています。
情報など足りないところあるかもしれませんがわかる範囲でご教授
いただけませんでしょうか?
```text
# src/main/resources/messages_ja.properties
typeMismatch.Integer={0} は数字で入力してください
```
```Java
// メッセージ設定クラス
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.validation.Validator;
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
public class MessageConfig extends WebMvcConfigurerAdapter
{
   @Autowired
   private MessageSource messageSource;
   @Bean
   public LocalValidatorFactoryBean validator()
   {
       LocalValidatorFactoryBean localValidatorFactoryBean = new LocalValidatorFactoryBean();
       localValidatorFactoryBean.setValidationMessageSource(messageSource);
       return localValidatorFactoryBean;
   }
   @Override
   public Validator getValidator()
   {
       return validator();
   }
}
```
```Java
// FORMクラス
import javax.validation.constraints.Pattern;
import org.hibernate.validator.constraints.NotEmpty;
import lombok.Data;
@Data
public class SampleForm {
   private Integer reg_emp_num;
  
   ...
}
```
↓を日本語(設定した内容)にしたい
```html
<!--画面に表示されるデフォルトエラーメッセージ -->
Failed to convert property value of type [java.lang.String] to required type [java.lang.Integer] for property 'reg_emp_num'; nested exception is java.lang.NumberFormatException: For input string: "あ"
```
補足:プロパティファイルにorg.hibernate.validator.constraints.NotEmpty.message=入を記入すれば、@NotEmptyをセットしたフィールドに対して設定したメッセージがあたりますが、  
typeMismatchについては日本語化がうまくいきませせん。  
 
SpringBoot 1.4.1
Jdk 1.8.0_121
MySQL 5.6.27
  • Java

    19091 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Spring Boot

    1038 questions

    Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る