2011-08-09 31 views
4

我有一個Struts2 web應用程序,它使用國際化的i18n屬性文件。 getText方法在jsp和動作類getText("some.identifier")中完美工作。java類中的Struts2 i18n

但是我如何在不是動作類的java類中使用它?換句話說,不能訪問getText方法的類。

回答

4
ResourceBundle labels = 
    ResourceBundle.getBundle("MyBundle", currentLocale); 
Enumeration bundleKeys = labels.getKeys(); 

while (bundleKeys.hasMoreElements()) { 
    String key = (String)bundleKeys.nextElement(); 
    String value = labels.getString(key); 
    System.out.println("key = " + key + ", " + 
       "value = " + value); 
} 

像這樣的事情會讀取你的資源包

+0

非常感謝! – user829237

+0

歡迎!很高興它幫助你 –

2

您可以使用ResourceBuldle加載屬性文件並獲取所需的屬性。

+0

感謝您的快速回復。你有一個簡短的代碼示例如何? – user829237

4

你實際上並不需要重新加載包。您可以使用下面的代碼進軍副本的Struts已加載:

LocalizedTextUtil.findDefaultText(key, ActionContext.getContext().getLocale()); 

記住ActionContext是線程局部的,所以如果你試圖從不同的線程比一個處理請求調用此方法,你會遇到一個錯誤。

的方法的一個重載形式接受一個對象數組作爲第三個參數,如果需要將參數傳遞給該本地化消息。