我有这个,这是有效的:
<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 变量分配字符串?
答案 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建议; - )