2012-12-06 68 views
2

在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號,我需要第二個問題的解決辦法,因爲我真的不知道發生了什麼事情在那裏。

回答

7

你可能只需要資源文件夾添加到項目的類路徑。

嘗試做以下操作:

右鍵點擊項目名稱,在Package Explorer視圖 - >屬性 - > Java構建路徑 - >留在源選項卡(通過開默認情況下)--->點擊文件夾--->您的項目內的所有文件夾列表現在應該出現--->蜱包含消息屬性文件

重建項目,並嘗試運行該文件夾。

+0

沒錯,就是這樣。 –

+0

我很高興能夠幫助你:-) – AndreaNobili

1

雖然已經過2次年以來這個問題問過,但我有同樣的問題,找到了解決辦法。

如果您想要將i18n屬性文件保存在webcontent文件夾之外的某個位置,則應修改.setting文件夾中的文件org.eclipse.resources.prefs。並且這樣做:

eclipse.preferences.version=1 
encoding//WebContent/WEB-INF/i18n/property_en.properties=UTF-8 
encoding//WebContent/WEB-INF/i18n/property_fr.properties=UTF-8 

在bean屬性中,像以前一樣設置messageSource。但加:

<property name="defaultEncoding" value="UTF-8" /> 

希望它的作品。

相關問題