JSTL标记集/ if

时间:2011-04-02 15:48:09

标签: html jsp jstl

使用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 个答案:

答案 0 :(得分:3)

如果它是布尔值,那么你不应该将它与字符串进行比较。只是做

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

此外,我看到你正在使用JSF。每当JSF提供相同的功能时,您应该尽可能地避免使用JSTL标记。这是因为它们没有按照您对编码的期望同步运行,并且可能在某些情况下导致无法预料的行为。只需使用JSF rendered属性。

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

有关使用rendered属性的更多示例,请选中this answer