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

时间:2010-05-31 18:01:07

标签: java jsp jstl el

我有这个,这是有效的:

<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 变量分配字符串?

3 个答案:

答案 0 :(得分:23)

fmt:message也有var属性,可以有效地实现您的目标。

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

这就是全部。为JSTL tlddoc添加书签,它可能会派上用场。

答案 1 :(得分:9)

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

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

答案 2 :(得分:5)

你必须这样做:

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

因为你不能在那个地方使用<fmt:message .. />是我的经验,所以与你建议的嵌套有关。或者使用@balusc建议; - )