Spring Bootはデフォルトで検証エラーのメッセージをValidationMessages.propertiesから取得します。これを変えたい!って思ったら以下のようにします。
手順としては
- LocalValidatorFactoryBeanを作成する
- messageSourceを任意のものにする
- WebMvcAutoConfigurationAdapterのaddValidatorで上のLocalValidatorFactoryBeanを返す
コードとしては以下のような感じになります。
package okazuki.validationEdu; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration.WebMvcAutoConfigurationAdapter; import org.springframework.context.MessageSource; import org.springframework.context.annotation.Bean; import org.springframework.validation.Validator; import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; @SpringBootApplication public class App extends WebMvcAutoConfigurationAdapter { @Autowired MessageSource messageSource; public static void main(String[] args) { SpringApplication.run(App.class, args); } @Bean public LocalValidatorFactoryBean validator() { LocalValidatorFactoryBean f = new LocalValidatorFactoryBean(); f.setValidationMessageSource(this.messageSource); return f; } @Override public Validator getValidator() { return validator(); } }
これでmessages.propertiesにメッセージを集約できます。