質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

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

Spring Boot

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

Q&A

解決済

2回答

2176閲覧

SpringBoot:バリデーションメッセージの日本語化について

hikage

総合スコア28

Java

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

Spring Boot

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

0グッド

0クリップ

投稿2017/12/12 08:13

編集2017/12/18 03:00

SpringBootでフォームエンティティのプロパティ(Integer)に対して、
数字以外の文字列を送信した際に、Springのデフォルトのエラーメッセージが
表示されるのですが、それを日本語化(デフォルトを日本語に)したいです。

下記の通りクラスパス配下にメッセージ設定ようのファイルを配置したのですが、
読み込めていないような気がしています。

情報など足りないところあるかもしれませんがわかる範囲でご教授
いただけませんでしょうか?

text

1# src/main/resources/messages_ja.properties 2 3typeMismatch.Integer={0} は数字で入力してください

Java

1// メッセージ設定クラス 2 3import org.springframework.beans.factory.annotation.Autowired; 4import org.springframework.context.MessageSource; 5import org.springframework.context.annotation.Bean; 6import org.springframework.context.annotation.Configuration; 7import org.springframework.validation.Validator; 8import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; 9import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 10 11@Configuration 12public class MessageConfig extends WebMvcConfigurerAdapter 13{ 14 @Autowired 15 private MessageSource messageSource; 16 17 @Bean 18 public LocalValidatorFactoryBean validator() 19 { 20 LocalValidatorFactoryBean localValidatorFactoryBean = new LocalValidatorFactoryBean(); 21 localValidatorFactoryBean.setValidationMessageSource(messageSource); 22 return localValidatorFactoryBean; 23 } 24 25 @Override 26 public Validator getValidator() 27 { 28 return validator(); 29 } 30}

Java

1// FORMクラス 2 3import javax.validation.constraints.Pattern; 4import org.hibernate.validator.constraints.NotEmpty; 5import lombok.Data; 6 7@Data 8public class SampleForm { 9 10 private Integer reg_emp_num; 11   12 ... 13}

↓を日本語(設定した内容)にしたい

html

1<!--画面に表示されるデフォルトエラーメッセージ --> 2Failed 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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

Spring Bootでバリデーションエラーメッセージを日本語にしてみる

要点で検索すればすぐでるよ

例:「Spring boot バリデーション 日本語化」

投稿2017/12/12 14:53

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hikage

2017/12/18 06:40

URLありがとうございました。
guest

0

ベストアンサー

typeMismatchはExceptionなのでpattern等でバリデーションをかけてはいかがでしょうか。
そうすればNotEmptyと同じようにできますよ。

投稿2017/12/18 06:29

sho_jonas

総合スコア77

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hikage

2017/12/18 06:38

ありがとうございます。 実は元々そうしてたんですけど、@patternってStringにしかつけられないみたいで、 コントローラーやサービス側でパースしないといけない場面が多かったので、 最初からEntityのフィールドをIntegerにした上で、そこにmessageつけて数字で入力して下さいって 跳ね返したかったんですね。 なので、typeMismatchでひっかけて{カラム名}は数字で入力して下さいという感じにしかたったです。 ただ、Exceptionだからバリデーション以前の問題という感覚はつかめた気がします。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問