是否有任何机制可以从文件系统中加载属性文件struts2
?我想出了一个热部署机制。如果我更新战争文件,它将被重新部署。我可以使用动态重新加载属性文件
LocalizedTextUtil.clearDefaultResourceBundles();
LocalizedTextUtil.addDefaultResourceBundle("struts/resources");
但它只会查看struts2
默认位置。
任何解决方案、hack、解决方法都受到热烈欢迎。
是否有任何机制可以从文件系统中加载属性文件struts2
?我想出了一个热部署机制。如果我更新战争文件,它将被重新部署。我可以使用动态重新加载属性文件
LocalizedTextUtil.clearDefaultResourceBundles();
LocalizedTextUtil.addDefaultResourceBundle("struts/resources");
但它只会查看struts2
默认位置。
任何解决方案、hack、解决方法都受到热烈欢迎。
我找到了解决方案
首先在 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. 告诉 struts 使用某个属性包。2.将其添加到类路径
例子:
在Struts.properties 中:
....
struts.custom.i18n.resources=globalMessages
....
创建globalMessages.properties
(以及任何特定于语言环境的包,例如globalMessages_ru_RU.properties
),将包放在名为的文件夹中/app_conf/i18n
,最后将目录/app_conf/i18n
放在类路径中。