【发布时间】:2019-06-10 19:25:36
【问题描述】:
所以,我尝试通过内化来制作我的项目。我做
- 消息
- Messages_zh
- Messages_fr
如果我将它们放入我的 /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
【问题讨论】:
-
您正在针对
ResourceBundleMessageSource作为类型(某处的字段)而不是MessageSource(您应该使用的接口而不是具体类型)进行编程。 -
@M.Deinum,谢谢。你是对的。在我的 1 个上下文中,我有 1 个用于 MessageSource 的 ResourceBundleMessageSource。如何选择您的评论作为答案? ;-)