因此,我尝试将项目内部化。我做
如果我将它们放到/ resources /中,则在我的上下文中与ResourceBundleMessageSource都可以正常工作。但是我想更改文件夹,例如更改为C:\ Apache \ servicemix \ etc \ conf \ messages。
当我这样做
Servicemix编写
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
为什么不起作用? 我使用清晰的Spring,而不是SpringBoot
答案 0 :(得分:0)
您收到的错误消息是由于您在代码库中的某个位置使用ResourceBundleMessageSource
作为类型。可能在具有该类型字段的类中。
您应该使用公用接口ResourceBundleMessageSource
,而不是使用具体类型的MessageSource
。这样,选择使用哪种实现都无关紧要。