JSTL <c:if> 标签在 JSF 1.1 中不起作用

Posted

技术标签:

【中文标题】JSTL <c:if> 标签在 JSF 1.1 中不起作用【英文标题】:JSTL <c:if> tag not working in JSF 1.1 【发布时间】:2011-07-04 00:54:26 【问题描述】:

我正在使用 JSF 1.1 以及 Tomahawk 和 Tomcat 6.0

<c:if test="$vo.type=1">
    <t:commandLink action="#Manager.openPatient">
        <c:out value="$vo.patientId"></c:out>
        <t:outputText value="#vo.patientId" />
        <f:param value="#vo.id" name="patientId"/>
    </t:commandLink>
</c:if>

我正在尝试根据类型添加条件。 如果vo.type = 1 请致电患者。 如果vo.type = 2 调用Account 等等。

&lt;c:if&gt; 标签似乎不起作用。任何解决此问题的想法或指示将不胜感激。

【问题讨论】:

【参考方案1】:

与普通 Java 一样,您需要与 == 进行比较,而不是与 = 进行比较。

<c:if test="$vo.type == 1">

与具体问题无关,如果使用纯 JSF 可以实现相同的功能,那么您应该更喜欢使用 JSTL。在这种特殊情况下,您可以只使用每个 JSF html 组件都支持的 rendered 属性。去掉&lt;c:if&gt;(和多余的&lt;c:out&gt;),改成&lt;t:commandLink&gt;如下:

<t:commandLink action="#Manager.openPatient" rendered="#vo.type == 1">
    <t:outputText value="#vo.patientId" />
    <f:param value="#vo.id" name="patientId"/>
</t:commandLink>

【讨论】:

感谢您的输入,“=”中有一个错字,而发布它实际上是“==”,仅在代码中我现在会检查呈现的标签并会更新你..我很确定这会工作 那么具体问题是由其他原因引起的。我的美分你在数据表中有这个。那么 JSTL 将根本不起作用。阅读我昨天发布的this answer 了解更多详情。 没有话要谢谢你我还有很长的路要走它就像魅力一样工作 不客气。只需一票和一个复选标记就足以表达您的感谢:) 另一个链接也很有帮助

以上是关于JSTL <c:if> 标签在 JSF 1.1 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

JSTL核心标签库

JSTL经常使用标签库介绍

JSTL # JSTL的简单使用:核心标签 c格式化标签 fmt 函数

jstl_core标签库

JSTL标签之c:foreach,c:if标签小结

在 JSF 1.1 中使用 JSTL