Springboot + validation的使用和中文提示信息乱码的问题

Springboot + validation的使用和中文提示信息乱码的问题

1. Hibernate Validation如何使用

需要引入的maven依赖:

		
            javax.validation
            validation-api
        
        
            org.hibernate.validator
            hibernate-validator
        

某个需要验证的java bean:

@Data
@AllArgsConstructor
public class ValidationError {

	@NotBlank(message = "{key.notBlank}")
    private String key;

    private String message;

}

默认的ValidationMessages.properties:

key.notBlank=key不能为空

2. 中文乱码的问题

有时候得到的验证结果中文出现乱码,是因为读取properties文件的编码方式不是utf-8,解决这个问题则需要设置validation在验证读取配置文件的编码格式

@Configuration
public class ValidationConfig {

    @Bean
    public MessageSource messageSource() {
        ResourceBundleMessageSource source = new ResourceBundleMessageSource();
        source.setDefaultEncoding("utf-8");//读取配置文件的编码格式
        source.setCacheMillis(-1);//缓存时间,-1表示不过期
        source.setBasename("ValidationMessages");//配置文件前缀名,设置为Messages,那你的配置文件必须以Messages.properties/Message_en.properties...
        return source;
    }

    @Bean
    public Validator validator() {
        LocalValidatorFactoryBean factoryBean = new LocalValidatorFactoryBean();
        MessageInterpolatorFactory interpolatorFactory = new MessageInterpolatorFactory();
        factoryBean.setMessageInterpolator(interpolatorFactory.getObject());
        factoryBean.setValidationMessageSource(messageSource());
        return factoryBean;
    }
}

如有错误,请联系我改正!

你可能感兴趣的:(java)