JSTL Core fmt:message 标记使用bundle/属性文件的动态消息



我理解标准fmt:message标签的用法,即我们在JSP中定义了这样的东西:

<fmt:setBundle basename="ResourceBundles.ValidationErrorMessages" var="errorMessages" />
<fmt:message key="${error.value}" bundle="${errorMessages}" />

假设错误。值 ="MQ2009"

我的名为"验证错误消息"的属性文件具有以下条目

MQ2009 = MQ time out

现在我的要求是有类似的东西

MQ2009 = Mq timeout happened for message {messagename}.

我可以动态定义messagename变量吗?即在运行时,messagename将在请求范围内可用,并且应该在属性文件中替换它。

我该怎么做?我是否需要定制标记,或者 Java EE 是否提供了我不知道的此功能?

您可以定义如下属性

MQ2009 = Mq timeout happened for {0}

然后

<fmt:message key="MQ2009" var="val" >
   <fmt:param value="${valueComingFromSomeParameter}"/>
</fmt:message>

然后

<c:out value="${val}"/>

在属性文件中

MQ2009 = Mq timeout happened for message {0}

然后,您可以将<fmt:param value="${messagename}"/>标记嵌套在<fmt:message标记中,其中messagename位于请求范围内。

相关内容

最新更新