【问题标题】:facelets ui:fragment ignores rendered attributefacelets ui:fragment 忽略渲染属性
【发布时间】:2012-01-31 23:46:34
【问题描述】:

我对这段代码有一个非常奇怪的行为:

<ui:fragment rendered="#{price.guestIdTrue}">
<b>PRICE_GUEST_ID_TRUE : #{price.guestIdTrue}</b>
    <h:outputText>#{Global.guestTypeMap[price.guestId]}&#160;#{price.guestIndex}</h:outputText>
</ui:fragment>

即使渲染条件为假,

PRICE_GUEST_ID_TRUE:假 1

1 是#{price.guestIndex}

ui 命名空间已正确定义,并且适用于其他 facelets。

<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:t="http://myfaces.apache.org/tomahawk">

对发生的事情的任何想法。

提前致谢。

【问题讨论】:

    标签: jsf jsf-2 primefaces facelets


    【解决方案1】:

    您似乎在迭代标记/组件中使用&lt;ui:fragment&gt;,其中#{price} 实际上是当前迭代的变量,例如JSTL &lt;c:forEach&gt; 标记或JSF &lt;h:dataTable&gt; 或&lt;ui:repeat&gt; 组件,而使用早期版本的 Mojarra。在这些情况下,#{price} 在评估时在 EL 范围内不可用。

    您需要 &lt;h:panelGroup rendered&gt; 或将 Mojarra 版本升级到最新版本。

    【讨论】:

    • 嗨,巴鲁斯。我刚刚用
    • 不客气。这种有问题的组合对我来说实际上是新的。这听起来像是 Tomahawk 中的(部分)状态保存错误。你用的是什么版本?目前是 1.1.11,唯一的另一个是 1.1.10。
    • 请注意&lt;h:panelGroup&gt;不会不呈现任何HTML标记,如果你不使用任何HTML特定的属性,例如id, styleClass 等,如果这是使用 &lt;ui:fragment&gt; 的唯一原因。 &lt;h:panelGroup rendered&gt; 应该与 &lt;t:dataList&gt; 一起正常工作。
    • 我正在使用 myfaces 2.1.4 和 tomahawk20-1.1.11.jar,我想我要放弃 tomahawk。
    • 我检查了这个问题,在 MyFaces 中有一些与 相关的问题(MYFACES-3239 和 MYFACES-3146),在 2.1.2 中解决了,但是 tomahawk 1.1.11 有部分共享代码,当时最新版本是2.1.1,所以1.1.11有bug,下个版本会解决。
    猜你喜欢
    • 2011-12-08
    • 1970-01-01
    • 2011-08-26
    • 2021-11-29
    • 1970-01-01
    • 2018-08-05
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多