Интерфейс Facelets: фрагмент игнорирует визуализированный атрибут - PullRequest
3 голосов
/ 02 января 2012

У меня очень странное поведение с этим фрагментом кода:

<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}

Пространство имен пользовательского интерфейса правильно определено, и оно работает с другими гранями.

<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 Ответ

6 голосов
/ 02 января 2012

Вы, похоже, используете <ui:fragment> внутри итеративного тега / компонента, где #{price} на самом деле является текущей итерированной переменной, такой как тег JSTL <c:forEach>, или компонент JSF <h:dataTable> или <ui:repeat>, в то время как используя раннюю версию Мохарры. В этих ситуациях #{price} - это , а не , доступный в области видимости EL на момент оценки.

Вам нужно вместо <h:panelGroup rendered> или обновить версию Mojarra до последней версии.

...