LoginSignup
24
25

More than 5 years have passed since last update.

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

Posted at

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

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

動作環境

  • Java 8
  • Spring Boot 1.3.2

実際に書いたコード

設定ファイルの用意

ほぼ初期設定のまま。言語ファイルは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();
    }
}
24
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
25