2

是否有任何机制可以从文件系统中加载属性文件struts2?我想出了一个热部署机制。如果我更新战争文件,它将被重新部署。我可以使用动态重新加载属性文件

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

但它只会查看struts2默认位置。

任何解决方案、hack、解决方法都受到热烈欢迎。

4

2 回答 2

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();
    }
于 2012-03-29T07:13:09.003 回答
0

您可以通过以下方式实现: 1. 告诉 struts 使用某个属性包。2.将其添加到类路径

例子:

Struts.properties 中

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

创建globalMessages.properties(以及任何特定于语言环境的包,例如globalMessages_ru_RU.properties),将包放在名为的文件夹中/app_conf/i18n,最后将目录/app_conf/i18n放在类路径中。

于 2010-08-17T11:39:15.727 回答