facelets ui:fragment忽略渲染属性

时间:2012-01-02 17:51:38

标签: jsf jsf-2 primefaces facelets

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

<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:false 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">

关于会发生什么的任何想法。

提前致谢。

1 个答案:

答案 0 :(得分:6)

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

您需要#{price}或将Mojarra版本升级到最新版本。