从struts2中的非默认位置加载resourcebundle

时间:2010-08-04 11:01:53

标签: java struts2 resourcebundle

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

动态重新加载属性文件
LocalizedTextUtil.clearDefaultResourceBundles();
LocalizedTextUtil.addDefaultResourceBundle("struts/resources");

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

欢迎任何解决方案,破解,解决方法。

2 个答案:

答案 0 :(得分: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();
    }

答案 1 :(得分:0)

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

示例:

Struts.properties

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

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