Дочерний элемент для повторного использования составного компонента

#ajax #jsf #jsf-2 #render #composite-component

#ajax #jsf #jsf-2 #визуализация #составной компонент

Вопрос:

Есть ли способ указать дочерний компонент составного компонента для повторного рендеринга с использованием f: ajax:

 <f:ajax render="compositeComponent:childComponent" />
  

Из моего краткого эксперимента не представляется возможным ссылаться на них, но я подумал, есть ли альтернативная стратегия для достижения этой цели.

Ответ №1:

Он должен работать нормально. Он полностью на стороне клиента (т. Е. сгенерированный JSF код JavaScript находит его в дереве HTML DOM).

Вероятно, вы указали неправильный идентификатор клиента. Откройте страницу в веб-браузере, щелкните правой кнопкой мыши и просмотрите исходный код, найдите сгенерированный HTML-элемент в исходном коде страницы и определите его id атрибут. Тот, который вы указываете в render атрибуте, должен относиться к нему либо абсолютно (префикс с : ), либо относительно (по сравнению с родительским UINamingContainer компонентом).

Другая возможная причина заключается в том, что вы поместили rendered атрибут в дочерний элемент того же самого составного компонента, который выполнял оценку, false что, в свою очередь, привело к тому, что сгенерированный HTML-элемент полностью отсутствует в дереве HTML DOM. Затем вы хотели бы вместо этого поместить rendered атрибут в дочерний элемент этого компонента, вот так:

 <h:panelGroup id="childComponent">
    <h:outputText value="#{bean.text}" rendered="#{bean.rendered}" />
</h:panelGroup>
  

Комментарии:

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