将另一个 JSTL 标记的结果指定为一个 JSTL 标记的值

2022-09-04 05:40:40

我有这个,它正在工作:

<c:choose>
    <c:when test="${sometest}">
        Hello, world!
    </c:when>
    <c:otherwise>
        <fmt:message key="${page.title}" />
    </c:otherwise>
</c:choose>

我想把它改成这样:

<c:choose>
    <c:when test="${sometest}">
        <c:set var="somevar" scope="page" value="Hello, world!"/>
    </c:when>
    <c:otherwise>
        <c:set var="somevar" scope="page" value="<fmt:message key="${page.title}">"
    </c:otherwise>
</c:choose

但当然,以下行不正确:

<c:set var="somevar" scope="page" value="<fmt:message key="${page.title}">"

如何将调用 fmt:message 时产生的字符串分配给 somevar 变量?


答案 1

fmt:message 还有一个属性,它可以有效地执行所需的操作。var

 <fmt:message key="${page.title}" var="somevar" />

就这样。将 JSTL tlddoc 添加为书签,它可能会派上用场。


答案 2

还可以使用正文的内容(而不是通过 value 属性)指定要设置的值:

<c:set var="somevar" scope="page">
  <fmt:message key="${page.title}"/>
</c:set>