您如何更改验证消息的资源包?默认值是将我的ValidationMessages.properties读取为ISO-8859-1(我想),但它是UTF-8。我试过了:
@Configuration @EnableWebMvc @ComponentScan public class ApplicationConfiguration extends WebMvcConfigurerAdapter{ @Bean( name = "messageSource" ) public ReloadableResourceBundleMessageSource validationMessageSource() { ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setBasename("ValidationMessages"); messageSource.setDefaultEncoding("UTF-8"); return messageSource; } @Bean public LocalValidatorFactoryBean validator() { LocalValidatorFactoryBean validatorFactoryBean = new LocalValidatorFactoryBean(); validatorFactoryBean.setValidationMessageSource(validationMessageSource()); return validatorFactoryBean; } @Override public Validator getValidator() { return validator(); }
无论我在这里放什么,Hibernate都不使用它来获取消息。有小费吗?我正在使用Hibernate 5和Spring 4。
您如何更改验证消息的资源包?默认值是将我的ValidationMessages.properties读取为ISO-8859-1(我想),但它是UTF-8。我试过这个:@Configuration @ ...
.properties
文件是按ISO-8859-1
编码(又称Latin-1
。(请参阅https://en.wikipedia.org/wiki/.properties和How to use UTF-8 in resource properties with ResourceBundle)编码按规范读取的。因此,您需要指定unicode字符而不是将文件另存为UTF-8
。
@Bean
public MessageSource validationMessageResource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasename("ValidationMessages");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
@Bean
public Validator validator() {
return Validation.byDefaultProvider()
.configure()
.messageInterpolator(
new ResourceBundleMessageInterpolator(
new MessageSourceResourceBundleLocator(validationMessageResource())
)
)
.buildValidatorFactory()
.getValidator()
;
}