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; @SpringBootApplicationpublicclass App extends WebMvcAutoConfigurationAdapter { @Autowired MessageSource messageSource; publicstaticvoid main(String[] args) { SpringApplication.run(App.class, args); } @Beanpublic LocalValidatorFactoryBean validator() { LocalValidatorFactoryBean f = new LocalValidatorFactoryBean(); f.setValidationMessageSource(this.messageSource); return f; } @Overridepublic Validator getValidator() { return validator(); } }
これでmessages.propertiesにメッセージを集約できます。