JSTL Core fmt:使用包/属性文件的消息标签动态消息

时间:2012-10-16 04:48:32

标签: java jsp java-ee web-applications jstl

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

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

假设error.Value =“MQ2009”

名为“ValidationErrorMessages”的属性文件具有以下条目

MQ2009 = MQ time out

现在我的要求是拥有像

这样的东西
MQ2009 = Mq timeout happened for message {messagename}.

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

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

2 个答案:

答案 0 :(得分:36)

您可以定义

等属性
MQ2009 = Mq timeout happened for {0}

然后

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

然后

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

答案 1 :(得分:4)

在您的属性文件

MQ2009 = Mq timeout happened for message {0}

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