2010-08-04 95 views
2

是否有任何機制從struts2的文件系統加載屬性文件?我正在想出一個熱門的部署機制。如果我更新戰爭文件,它將被重新部署。我能夠重新加載性能使用從struts2中的非默認位置加載資源包

LocalizedTextUtil.clearDefaultResourceBundles(); 
LocalizedTextUtil.addDefaultResourceBundle("struts/resources"); 

飛文件,但它只會看在struts2默認位置。

任何解決方案,黑客,解決方法都熱烈歡迎。

回答

0

您可以通過以下方式實現此目的: 1.讓struts使用某個屬性包。 2.將它添加到類路徑

實施例:

Struts.properties

.... 
struts.custom.i18n.resources=globalMessages 
.... 

globalMessages.properties創建(和任何區域設置特定束,如globalMessages_ru_RU.properties),將束( s)放在名爲/app_conf/i18n的文件夾中,最後將目錄/app_conf/i18n放置在類路徑中。

2

我找到了解決辦法

首先在struts.properties struts.custom.i18n.resources = globalMessages
那麼,下面的代碼添加到您的StartupServlet或其他一些地方,將執行在服務器啓動

URL[] urls; 
    try { 
     File file = new File("/your path"); 
     URL url = file.toURI().toURL();   
     urls = new URL[]{url}; 

     ClassLoader cl = new URLClassLoader(urls); 
     LocalizedTextUtil.setDelegatedClassLoader(cl); 
     LocalizedTextUtil.addDefaultResourceBundle("globalMessages"); 
    } catch (MalformedURLException e) { 
     e.printStackTrace(); 
    }