13

我有这个,它正在工作:

<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变量?

4

3 回答 3

26

Thefmt:message也有一个var属性,可以有效地执行您想要的操作。

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

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

于 2010-05-31T18:13:49.097 回答
9

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

<c:set var="somevar" scope="page">
  <fmt:message key="${page.title}"/>
</c:set>
于 2010-05-31T18:08:38.443 回答
5

你将不得不做:

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

由于您不能<fmt:message .. />在那个地方使用是我的经验,因此与您建议的嵌套有关。或者接受@balusc 的建议;-)

于 2010-05-31T18:17:38.147 回答