#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. да. вы правы. когда я создал более простой пример, он работал нормально.