我尝试使用Mkyong's guide访问外部属性文件,但没有成功。
这是位于WEB-INF中的web-osgi-context.xml文件中的bean定义:
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list>
<value>classpath:bundles/resource</value>
<value>classpath:bundles/override</value>
<value>file:c:/test/messages</value>
</list>
</property>
<property name="cacheSeconds" value="10"/>
</bean>
访问bean:
@SpringBean
private ReloadableResourceBundleMessageSource messageSource;
尝试提取这样的信息:
String name = messageSource.getMessage("customer.name",
new Object[] { 28,"http://www.mkyong.com" }, Locale.US);
System.out.println("Customer name (English) : " + name);
我在C:/ test / messages和C:/ test文件夹中都有messages_en_US.properties文件。它们包含以下行:
customer.name=Test, age : {0}, URL : {1}
我的全部,我错过了什么?我得到的信息是:
org.springframework.context.NoSuchMessageException: No message found under code 'customer.name' for locale 'en_US'.
at org.springframework.context.support.AbstractMessageSource.getMessage(AbstractMessageSource.java:155)
不过,我也试过内部属性,也没有成功。我在我的本地servicemix(6.1.1)中部署.war,我也使用wicket(6.24.0)和spring(3.2.14)。在本地运行mkyong的应用程序(不是Web应用程序)(不在我的本地servicemix上部署它)。
答案 0 :(得分:1)
Sooo我有点发现了问题,得到了一个工作......
这不起作用:
public class tt extends Application {
@Override
public void onCreate() {
super.onCreate();
TypeFaceUtil.overrideFont(getApplicationContext(),"SERIF","fonts/calibri.ttf");
}
}
在代码中:
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename">
<value>classpath:messages</value>
</property>
</bean>
通过在此源上运行getClass(),我得到了
@SpringBean
private ReloadableResourceBundleMessageSource messageSource;
但这有效:
class WICKET_org.springframework.context.support.ReloadableResourceBundleMessageSource$$EnhancerByCGLIB$$852b0c02
通过在此源上运行getClass(),我得到了
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("classpath:messages");
return messageSource;
}
Cglib增强器是否有可能在这里搞乱?我能用任何方式让第一个选项工作吗?