2013-05-20 39 views
1

使用jstl <fmt:message>标记,如何配置容器以从两个.properties文件加载消息?如何将两个.properties加载到相同的资源包中

我需要exatclty是一种简单的方法来覆盖一个文件中的消息。我们正在构建一个可重新分发的Web应用程序,其他人可能需要覆盖原始消息来定制他们的软件。

因此,要轻松升级webapp,我们需要拆分message.properties,以便它们不需要将原始message.properties的未来更新版本与其定制版本合并。

回答

-1

属性扩展HashTable。所以你可以使用addAll()。只需加载两个属性文件并将第二个的内容添加到第一个。相同的密钥被覆盖。

+0

在这种情况下,它取决于您的应用程序容器。它什么时候加载属性?有没有容器从你的代码调用的任何初始化()方法?您的代码是在容器之前调用的吗? 如果这些都没有帮助,那么您必须在部署期间执行此操作。部署标准文件并使用客户特定的文件条目覆盖条目。 –

+1

我真的不知道它何时加载message.properties文件。它应该是jstl spec内部 –

0

对于我来说,在同一个JSP中使用两个属性文件的唯一解决方案是使用第一个属性(国际化),而第二个属性仅在将其他messasge放入这些资源包的标记时起作用。

例如:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> 
<c:set var="language" value="es_MX" scope="session" /> 
<fmt:setLocale value="${language}" /> 
<fmt:setBundle basename="i18n" /> 
<fmt:bundle basename="app"> 
    <h1><fmt:message key="application.environment" /></h1> 
</fmt:bundle> 
<fmt:message key="aplicacion.nombre" /> 

我有两个属性文件i18n_es_MX.properties(aplicacion.nombre),另一种是app.properties(application.environment),对我来说工作正常。

相关问题