Тег JSTL установлен / если - PullRequest
       4

Тег JSTL установлен / если

0 голосов
/ 02 апреля 2011

Оценка с использованием JSTL, если

Почему мое значение isOnline не оценивается как истинное с использованием JSTL, если

<c:set var="isOnline" value="${friend.online}"/>
<h:outputText value="#{isOnline}" />
<br/>
(isOnline) is: ${isOnline}
<c:if test="${isOnline == 'true'}" var="theTruth">
  <h:outputText value="hello"/>
</c:if>
<br/>
(isOnline == 'true') is: ${theTruth}

Результат:

true
(isOnline) is: true
(isOnline == 'true') is: false

Я не совсем уверен, почему условие оценивается как ложное, хотя я печатаю значение isOnline, которое показывает, что это правда.

любая помощь будет оценена .. Заранее спасибо

1 Ответ

3 голосов
/ 02 апреля 2011

Если это логическое значение, вам не следует сравнивать его со строкой.Просто сделайте

<c:if test="${isOnline}">

Далее, я вижу, что вы используете JSF.Вы действительно должны стараться избегать тегов JSTL, насколько это возможно, всякий раз, когда JSF предоставляет такую ​​же функциональность из коробки.Это потому, что они не работают синхронно, как вы ожидаете от кодирования, и могут привести к непредвиденному поведению в определенных обстоятельствах.Просто используйте атрибут JSF rendered.

<h:outputText value="Hello" rendered="#{friend.online}" />

Чтобы получить дополнительные примеры использования атрибута rendered, отметьте этот ответ .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...