Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

Spring Bootではapplication.propertiesに設定を書けばMessageSourceクラスから多言語対応されたメッセージが返ってくるらしい。
...が、どうもバリデーションエラーメッセージは多言語化してくれなかった。

簡単にやり方をメモっておく。

動作環境

  • Java 8
  • Spring Boot 1.3.2

実際に書いたコード

https://github.com/yhinoz/spring-boot-example

設定ファイルの用意

ほぼ初期設定のまま。言語ファイルはi18nの下に置きたかったのでそこだけ変更。

src/main/resources/config/applicaton.properties
# INTERNATIONALIZATION
spring.messages.basename=i18n/messages
spring.messages.cache-seconds=-1
spring.messages.encoding=UTF-8

言語ファイルの用意

設定ファイルに記載した場所と名前で用意する。
日本語を記載するファイルを作るのでmessages_ja.propertiesというファイル名にする。

src/main/resources/i18n/messages_ja.properties
org.hibernate.validator.constraints.NotEmpty.message=入力してください

設定クラスの用意

messageSourceクラスをバリデータに設定するクラスを用意する。
@Configurationを見て自動的に読み込んでくれるので作成するだけで良い。

src/main/java/com/example/config/MessageConfig.java
package com.example.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
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();
    }
}
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした