2012-02-08 2 views
3

Я не могу понять, как это возможно, поэтому я просто покажу код.jstl состояние не работает

Это работает. Как и ожидалось, напечатан список «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, при преобразовании в boolean, равна true. Парсер пытается преобразовать строковое значение, которое вы передали в boolean, используя Boolean.valueOf(..). И преобразование строки true == true, используя Boolean.valueOf(..), дает вам false.

+0

Ох ... Я подозревал, что это была очень глупая проблема. спасибо – Fabio