2012-02-08 112 views
3

我不明白這怎麼可能,所以我只顯示代碼。jstl條件不起作用

This Works。正如預期的那樣,打印出「PAIR」列表:

<c:forEach var="element" items="${list}"> 
<c:choose> 
    <c:when test="true"> 
     <div>PAIR ${element}</div> 
    </c:when> 
    <c:otherwise> 
     <div>ODD ${element}</div> 
    </c:otherwise> 
</c:choose> 
</c:forEach> 

這不起作用。只打印「ODD」:

<c:forEach var="element" items="${list}"> 
<c:choose> 
    <c:when test="true == true"> 
     <div>PAIR ${element}</div> 
    </c:when> 
    <c:otherwise> 
     <div>ODD ${element}</div> 
    </c:otherwise> 
</c:choose> 
</c:forEach> 

有人可以幫我嗎?

回答

6

您錯過了EL文字:${..}。使用test="${true == true}",它會工作。

第一個示例的工作原理是因爲字符串true轉換爲布爾值時是true。解析器嘗試使用Boolean.valueOf(..)將您傳遞給布爾值的字符串值轉換。而true == true字符串的轉換,使用Boolean.valueOf(..)會給你false

+0

哦......我懷疑這是一個非常愚蠢的問題。謝謝 – Fabio 2012-02-08 20:01:25