【问题标题】:JSTL tag set/ifJSTL 标记集/如果
【发布时间】:2011-04-02 15:48:08
【问题描述】:

如果使用 JSTL 进行评估

为什么我的值 isOnline 没有被使用 JSTL 评估为 true if

<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 的值表明它是真的。

任何帮助将不胜感激..提前感谢

【问题讨论】:

    标签: html jsp jstl


    【解决方案1】:

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

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

    此外,我看到您正在使用 JSF。每当 JSF 提供相同的功能时,您真的应该尽量避免使用 JSTL 标记。那是因为它们不会像您对编码所期望的那样同步运行,并且在某些情况下可能会导致无法预料的行为。只需使用 JSF rendered 属性即可。

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

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

    【讨论】:

    • 感谢您的回答,我可能会按照您的建议使用渲染。因为我在使用 JSTL if 时遇到了奇怪的行为。即使friend.online 是布尔值,但使用 仍然被评估为假,我不知道为什么。
    • 然后你在 h:dataTable 中使用它。请改用rendered 属性。另请参阅链接的答案。
    猜你喜欢
    • 2011-02-26
    • 2016-02-19
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    • 2011-09-12
    相关资源
    最近更新 更多