2010-05-31 113 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