使用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值显示它是真的。
任何帮助将不胜感激..提前致谢
答案 0 :(得分:3)
如果它是布尔值,那么你不应该将它与字符串进行比较。只是做
<c:if test="${isOnline}">
此外,我看到你正在使用JSF。每当JSF提供相同的功能时,您应该尽可能地避免使用JSTL标记。这是因为它们没有按照您对编码的期望同步运行,并且可能在某些情况下导致无法预料的行为。只需使用JSF rendered
属性。
<h:outputText value="Hello" rendered="#{friend.online}" />
有关使用rendered
属性的更多示例,请选中this answer。