使用jstl <fmt:message>
标记,如何配置容器以从两个.properties文件加载消息?如何将两个.properties加载到相同的资源包中
我需要exatclty是一种简单的方法来覆盖一个文件中的消息。我们正在构建一个可重新分发的Web应用程序,其他人可能需要覆盖原始消息来定制他们的软件。
因此,要轻松升级webapp,我们需要拆分message.properties,以便它们不需要将原始message.properties的未来更新版本与其定制版本合并。
使用jstl <fmt:message>
标记,如何配置容器以从两个.properties文件加载消息?如何将两个.properties加载到相同的资源包中
我需要exatclty是一种简单的方法来覆盖一个文件中的消息。我们正在构建一个可重新分发的Web应用程序,其他人可能需要覆盖原始消息来定制他们的软件。
因此,要轻松升级webapp,我们需要拆分message.properties,以便它们不需要将原始message.properties的未来更新版本与其定制版本合并。
属性扩展HashTable。所以你可以使用addAll()。只需加载两个属性文件并将第二个的内容添加到第一个。相同的密钥被覆盖。
对于我来说,在同一个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),对我来说工作正常。
在这种情况下,它取决于您的应用程序容器。它什么时候加载属性?有没有容器从你的代码调用的任何初始化()方法?您的代码是在容器之前调用的吗? 如果这些都没有帮助,那么您必须在部署期间执行此操作。部署标准文件并使用客户特定的文件条目覆盖条目。 –
我真的不知道它何时加载message.properties文件。它应该是jstl spec内部 –