从struts2中的非默认位置加载资源包

发布于 2024-09-13 04:20:55 字数 297 浏览 7 评论 0原文

struts2中有没有从文件系统加载属性文件的机制?我正在想出一个热部署机制。如果我更新 war 文件,它将被重新部署。我可以使用即时重新加载属性文件,

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

但它只会在 struts2 默认位置中查找。

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

Is there any mechanism to load the properties file from the file system in struts2? I am coming up with a hot deployment mechanism. If I update the war file, it would be redeployed. I am able to reload properties file on the fly using

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

but it would only look in the struts2 default location.

Any solution, hack, workaround is heartily welcomed.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

酷遇一生 2024-09-20 04:20:55

找到了解决方案

我首先在 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();
    }

I found a solution

first in struts.properties struts.custom.i18n.resources=globalMessages
then, add the below code to the your StartupServlet or some other place that will execute where the server start

    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();
    }
古镇旧梦 2024-09-20 04:20:55

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

示例:

Struts.properties 中:

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

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

You can achieve this by:
1. Tell struts to use a certain property bundle.
2. Add it to the classpath

Example:

In Struts.properties:

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

Create globalMessages.properties (and any locale specific bundles, such as globalMessages_ru_RU.properties ), place the bundle(s) in a folder called /app_conf/i18n and finally place the directory /app_conf/i18n in the class path.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文