在Spring引导中从属性文件获取消息

在Spring引导中从属性文件获取消息,spring,validation,resourcebundle,jsr,Spring,Validation,Resourcebundle,Jsr,我试图从属性文件读取错误消息,但遇到此错误消息 org.springframework.context.NoSuchMessageException: No message found under code 'error.id.invalid' for locale 'en'. 我正在使用ResourceBundleMessageSource设置基名称 @Bean public ResourceBundleMessageSource messageSource() { Resource

我试图从属性文件读取错误消息,但遇到此错误消息

org.springframework.context.NoSuchMessageException: No message found under code 'error.id.invalid' for locale 'en'.
我正在使用ResourceBundleMessageSource设置基名称

@Bean
public ResourceBundleMessageSource messageSource() {
    ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
    messageSource.setBasename("classpath:validations/messages.properties");
    return messageSource;
}
这是我的异常处理程序

@Autowired
private ResourceBundleMessageSource messageSource;

@ExceptionHandler(value = {ConstraintViolationException.class})
@ResponseStatus(value = HttpStatus.BAD_REQUEST)
@ResponseBody
public ErrorMessageDTO handleResourceNotFoundException(ConstraintViolationException e) {

    ErrorMessageDTO message = null;

    if (e != null) {
        Set<ConstraintViolation<?>> violations = e.getConstraintViolations();
        StringBuilder strBuilder = new StringBuilder();
        for (ConstraintViolation<?> violation : violations) {
            Locale currentLocale = LocaleContextHolder.getLocale();
            String msg = messageSource.getMessage(violation.getMessage(), null, currentLocale);
            strBuilder.append(msg).append(", ");
        }
        message = new ErrorMessageDTO(MessageType.ERROR, strBuilder.toString(), BAD_REQUEST_ACTION, MODEL_INVALID_CODE);
        try {
            slf4jLogger.error(mapper.writeValueAsString(message));

        } catch (JsonProcessingException ex) {
            slf4jLogger.error(ex.getMessage());

        }
    }
    return message;
}
有人能帮我找出我错过了什么或做错了什么吗

我知道有很多问题与这个错误有关,但没有一个解决方案对我有效。感谢您的帮助


提前感谢。

这是提供
ResourceBundleMessageSource
的方法。删除
.properties

@Bean
public ResourceBundleMessageSource messageSource() {
    ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
    messageSource.setBasename("classpath:validations/messages");
    return messageSource;
}  
还可以尝试提供LocaleResolver

@Bean
    public LocaleResolver localeResolver() {
        SessionLocaleResolver slr = new SessionLocaleResolver();
        slr.setDefaultLocale(Locale.ENGLISH);
        return slr;
    }

如果删除
.properties
并保留
messageSource.setBasename(“classpath:validations/messages”)在声明中?这也没有帮助@StanislavLThat也没有帮助。我还尝试使用
CookieLocaleResolver
public CookieLocaleResolver localeResolver(){CookieLocaleResolver localeResolver=new CookieLocaleResolver();Locale defaultLocale=new Locale(“en”);localeResolver.setDefaultLocale(defaultLocale);return localeResolver;}
@Bean
    public LocaleResolver localeResolver() {
        SessionLocaleResolver slr = new SessionLocaleResolver();
        slr.setDefaultLocale(Locale.ENGLISH);
        return slr;
    }