JSF 2.2 - все, что находится внутри пользовательского интерфейса: повторяется, хотя визуализируется = "ложь"

В настоящее время я перевожу веб-приложение из JSF 1.2/Richfaces 3.3.3 в JSF 2.2. Для итерации данных мы использовали a4j:repeat from Richfaces. Теперь я хочу изменить итераторы на ui:repeat, потому что мы хотим выбросить Richfaces.

Однако я столкнулся с очень странным поведением. Представьте себе фрагмент кода, подобный этому (упрощенный от оригинала):

<ui:repeat id="criterions" var="criterion" value="#{AdvancedSearchBean.criterionList}">
    <h:panelGroup rendered="#{criterion.searchCriterion.displayType == 'PERSON'}">
        <h:inputText value="#{criterion.searchString}"/>
    </h:panelGroup>
</ui:repeat>

Часть внутри panelGroup оценивается, хотя отображаемое условие определенно оценивается как ложное. Если я изменю ui: repeat на a4j:repeat, он работает нормально, часть внутри группы Panel НЕ оценивается.

Это реальная проблема для нашего кода, так как переменная "критерий" может содержать разные объекты (расширяющие один и тот же суперкласс). В этом случае объект критерия не содержит свойства с именем "searchString" (поскольку оно не относится к типу "PERSON") -> выдается ошибка.

Кто-нибудь может объяснить это поведение или есть решение? Я использую версию JSF, интегрированную в WildFly 8.0.0.final (Mojarra 2.2.5-jbossorg-3)

Спасибо Маркус

0 ответов

Другие вопросы по тегам