2010-08-04 97 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(); 
    }