无法转换 [..ReloadableResourceBundleMessageSource] 到所需的类型 [..资源包



所以,我尝试用内化来制作我的项目。我使

  • 消息
  • Messages_en
  • Messages_fr

如果我将它们放入我的/resources/中,在我的上下文中,ResourceBundleMessageSource 一切正常。但是我想更改文件夹,例如更改为C:\Apache\servicemix\etc\conf\messages。

当我做出这样的 smth 时

服务组合写入

ResourceBundle [file:C:/Apache/servicemix/etc/conf/messages/Messages] not found for MessageSource: Can't find bundle for base name file:C:/Apache/servicemix/etc/confi/messages/Messages, locale en

在 Servicemix 的调试模式下,我试图从我的属性中获取正确的消息,当我做类似的事情时它会起作用

    ReloadableResourceBundleMessageSource messageSource=new ReloadableResourceBundleMessageSource();
    messageSource.setBasename("file:C:/Apache/servicemix/etc/configurator/messages/Messages");
    messageSource.getMessage("next",null,new Locale("en"));

我明白我需要的。我想在我的上下文中使用它。但 导致错误:

Caused by: java.lang.IllegalStateException: Cannot convert value of type [org.springframework.context.support.ReloadableResourceBundleMessageSource] to required type [org.springframework.context.support.ResourceBundleMessageSource] for property 'messageSource': no matching editors or conversion strategy found
at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:267)
at org.springframework.beans.BeanWrapperImpl.convertIfNecessary(BeanWrapperImpl.java:449)
... 140 more

为什么它不起作用?我使用Clear Spring,而不是SpringBoot

您收到的错误消息是由于在代码库中的某个地方将ResourceBundleMessageSource用作类型。可能在具有该类型字段的类中。

您应该改用通用接口MessageSource,而不是使用具体类型的ResourceBundleMessageSource。这样,选择使用哪种实现就无关紧要了。

最新更新