Java 在jstl fmt中更改翻译而不重新编译

Java 在jstl fmt中更改翻译而不重新编译,java,jsp,internationalization,jstl,Java,Jsp,Internationalization,Jstl,我目前正在用java开发一个国际化的Web应用程序,只使用标准的ServletAPI(没有框架)。对于页面上的所有静态文本,如标题、标签等,我一直在使用fmt标记库,由WEB-INF/类中的属性文件支持。 应用程序即将完成,但我们的客户可能希望稍后更改或更新翻译的要求突然被引入。 由于属性文件位于war内部,如果不重新编译应用程序,这是不可行的。所以,我的问题很简单:是否有任何方法更新war中的属性文件,或者让setBundle标记从外部目录加载文件。或者第三种更干净、更正确的方法来实现这一点?

我目前正在用java开发一个国际化的Web应用程序,只使用标准的ServletAPI(没有框架)。对于页面上的所有静态文本,如标题、标签等,我一直在使用fmt标记库,由WEB-INF/类中的属性文件支持。 应用程序即将完成,但我们的客户可能希望稍后更改或更新翻译的要求突然被引入。

由于属性文件位于war内部,如果不重新编译应用程序,这是不可行的。所以,我的问题很简单:是否有任何方法更新war中的属性文件,或者让setBundle标记从外部目录加载文件。或者第三种更干净、更正确的方法来实现这一点?

战争只是一个zip文件。解压它,更改属性文件,然后重新压缩。无需重新编译任何内容


提供一个简单的脚本来在单个操作中实现这一点应该很容易。您甚至可以使用jar的u(update)选项来完成。请参见将它们放入外部文件夹并将其路径添加到webapp的运行时类路径。例如,
/var/webapp/conf
。至于将此路径添加到webapp的运行时类路径,这取决于所使用的服务器。例如,如果是Tomcat 6/7,则需要将其添加到
Tomcat/conf/catalina.properties
文件的
shared.loader
属性中

shared.loader = /var/webapp/conf

通过这种方式,它可以以通常的方式在webapp的运行时类路径中使用,并且您不需要重新打包WAR。

我不确定更改或更新翻译的需要如何“突然”出现——您应该始终假设应用程序中的任何文本都可能需要修改,尤其是翻译。当然,而且它很容易修改,只要您有源代码(或者按照下面的建议解压/重新压缩,或者部署war)。这也是为什么我希望有一个干净的方法来做这件事。谢谢,这就是我一直在寻找的解决方案。我想试试,只是想跟进一下。我最终选择了巴卢斯的解决方案。将以下内容添加到jboss-service.xml<代码>,适用于JBoss4.2和JBoss6。所以,再次感谢你