【问题标题】:JSTL Core fmt:message Tag Dynamic message using bundle/properties fileJSTL Core fmt:message Tag 使用 bundle/properties 文件的动态消息
【发布时间】:2012-10-06 03:20:06
【问题描述】:

我了解标准 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 提供了我不知道的这个功能?

【问题讨论】:

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


    【解决方案1】:

    您可以定义类似的属性

    MQ2009 = Mq timeout happened for {0}
    

    然后

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

    然后

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

    【讨论】:

    • 您不必使用c:out。如果您只是删除var="val" 部分,带有参数的消息将显示在fmt:message 位置。比使用额外的 c:out 标签方便得多。
    • c:out 与 escapeXml="true" 结合使用是有意义的
    【解决方案2】:

    在你的属性文件中

    MQ2009 = Mq timeout happened for message {0}
    

    然后您可以将&lt;fmt:param value="${messagename}"/&gt; 标记与&lt;fmt:message 标记嵌套在一起,其中messagename 在请求范围内。

    【讨论】:

      猜你喜欢
      • 2012-07-12
      • 1970-01-01
      • 2021-06-15
      • 1970-01-01
      • 2014-11-03
      • 2014-11-28
      • 2015-12-29
      • 2011-01-15
      • 2011-05-31
      相关资源
      最近更新 更多