У меня проблема с условным рендерингом компонентов JSF, обновленных с помощью ICEFaces Push.
Вариант использования: я перебираю изображения в каталоге, а на новом изображении я вызываю ICEFaces Push Renderer, чтобы на странице xhtml было обновленное изображение и его информация. Изображение отображается на одной панели, а его информация - на другой. Информация не всегда доступна, и когда ее нет, я хочу показать логотип команды вместо информационной панели. Это код xhtml:
<ice:graphicImage height="1024" width="768" value="#{viewBean.image}"></ice:graphicImage>
<h:panelGrid border="0" columns="1">
<c:choose>
<c:when test="${viewBean.infoAccessible}">
<h:panelGrid border="0" columns="2">
<h:outputText value="Data:"></h:outputText>
<h:outputText value="#{viewBean.info.time}"></h:outputText>
</h:panelGrid>
</c:when>
Приведенный выше код вместе с серверными кодами работает как задумано, но есть странный побочный эффект, которого я не понимаю. Должен быть один вызов viewBean.image, но он увеличивается ... так что при запуске приложения - я получаю до 70+ вызовов этого метода, что не происходит, когда я удаляю проверку состояния viewBean.infoAccessible.
... Я могу также предоставить исходные тексты на стороне сервера, но нет прямой взаимосвязи между viewBean.image и vievBean.infoAccessible (также некоторые другие ppl взглянули на мои коды).
Итак, в чем здесь проблема? Чего мне не хватает?
Есть ли другой способ скрыть / показать компоненты JSF в принудительном обновлении ICEFaces?