读取以utf-8编码的ValidationMessages >>

问题描述 投票:2回答:2

您如何更改验证消息的资源包?默认值是将我的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 @ ...

java spring hibernate hibernate-validator spring-4
2个回答
3
投票

.properties文件是按ISO-8859-1编码(又称Latin-1。(请参阅https://en.wikipedia.org/wiki/.propertiesHow to use UTF-8 in resource properties with ResourceBundle)编码按规范读取的。因此,您需要指定unicode字符而不是将文件另存为UTF-8


0
投票
    @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()
                ;
    }
© www.soinside.com 2019 - 2024. All rights reserved.