在applicationContext.xml中我已經定義的MessageSource這樣的:資源包[消息]沒有發現的MessageSource:無法找到捆綁的基本名稱的消息
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list>
<value>/WEB-INF/i18n/messages</value>
</list>
</property>
</bean>
我還需要加載所有本地化的消息,所以我已經作出了自己的類吧:
public class ErpMessageSource extends ResourceBundleMessageSource {
public Map<String, String> getMessages(String basename, Locale locale) {
Set<String> keys = getKeys(basename, locale);
Map<String, String> m = new HashMap<String, String>();
for (String key : keys) {
try {
m.put(key, getMessage(key, null, locale));
} catch (Exception e) {
System.err.println(key + " - " + e.getLocalizedMessage());
}
}
return m;
}
private Set<String> getKeys(String basename, Locale locale) {
ResourceBundle bundle = getResourceBundle(basename, locale);
return bundle.keySet();
}
}
我有2個問題是:
問題1: 我的消息文件位於WEB-INF/i18n目錄下。它僅包含2個文件:messages_en.properties和messages_hr.properties。
如果我嘗試運行上面的代碼我得到警告: 「資源包[消息]沒有發現的MessageSource:無法找到捆綁的基本名稱的消息,區域‘的一些區域’」,其次是NullPointerException異常。
如果我將郵件文件到WEB-INF/classes文件夾的問題消失了,但是我得到第二個問題。
問題2: 如果我運行上面的代碼,而消息是WEB-INF/classes目錄下,我得到異常:「沒有在代碼‘some.code’的區域發現了‘一些區域’的消息」即使你所有的鍵都正確加載。
問題是:如何通過保持內部WEB-INF/i18n的文件夾中的郵件,以避免問題的1號,我需要第二個問題的解決辦法,因爲我真的不知道發生了什麼事情在那裏。
沒錯,就是這樣。 –
我很高興能夠幫助你:-) – AndreaNobili