2010-05-31 118 views
11

我这有,价值的结果,这是工作:分配另一个JSTL标签作为一个JSTL标签

<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}">" 

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

回答

21

fmt:messagevar属性以及有效地你想要做什么。

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

就是这样。收藏JSTL tlddoc,它可能会派上用场。

+0

再次感谢你......有趣的是,有三个答案和三种不同的方式来做到这一点:) – NoozNooz42 2010-05-31 18:20:29

+0

不客气。另外两个答案在技术上是相同的,确实有效。它只是更多的代码,只能证明在大多数JSTL'fmt'标记中'var'属性的存在和使用是相对未知的;) – BalusC 2010-05-31 18:26:15

+0

为什么它被称为'fmt:message'如果它所做的全部都是设置一个变量。它以任何方式格式化或修改变量? – 2010-07-09 17:02:21

8

也可以到指定的值,而不是通过value属性使用主体的内容设置:

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

你有做:

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

既然你不能使用<fmt:message .. />在那个地方是我的经验,有嵌套像你所说的事情。或者去@balusc建议;-)

+0

Andrévan Toly:+1,thx给你也是......我跟着BalusC指出的fmt标签的var属性越短越好。 – NoozNooz42 2010-05-31 18:28:21