所以,我尝试用内化来制作我的项目。我使
- 消息
- 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
。这样,选择使用哪种实现就无关紧要了。