springboot validator i18n 验证消息国际化

原创文章,欢迎转载:http://miao.blog/article/spring-boot-validator-i18n

1. application.yml 配置
spring:
  messages:
    basename: i18n/validations
    encoding: UTF-8


2. 在 resources/i18n 目录下,添加各个语言的 validations_*.properties 文件

validations_*.properties

properties 文件内对同一个key设置不同的消息内容
properties 文件


3. controller 请求参数添加 @Valid 注解
@RequestMapping(method = RequestMethod.POST)
public JsonResult create(@Valid @RequestBody RepositoryInputDTO input) {
    // business code
}


4. 请求参数DTO中添加验证注解和消息key
@Getter
@Setter
public class RepositoryInputDTO extends RequestDTO {
    /**
     * Repository name
     */
    @NotBlank(message = "{repository.name.blank}")
    private String name;
}


5. 在启动类添加
    /**
     * MessageSource
     */
    @Resource
    private MessageSource messageSource;

    /**
     * Validation message i18n
     * @return Validator
     */
    @NotNull
    @Bean
    public Validator getValidator() {
        LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean();
        validator.setValidationMessageSource(this.messageSource);
        return validator;
    }


6. 用postman测试下效果

中文消息:

日语消息:

推荐阅读
用@CacheEvict删除缓存只能删除指定key的缓存,有些情况需要根据前缀删除所有key的时候,用@CacheEvict就做不到了,所以我们自定义一个@CacheRemove来处理根据前缀模糊删除所有cache(支持Spring EL表达式)
评论
11

11

2个月前

这样配置,怎么解析语言信息的,我试了一直是中文

miao

miao

1个月前

你看下我用postman访问api的时候Headers里边带来一个参数,Accept-Language