Моя страница состоит из нескольких областей, которые создаются путем перебора списка элементов, используя <ui:repeat>
. Представьте себе этот упрощенный пример:
<h:form id="form">
<ui:repeat id="repeatContainer" var="item" value="#{testBean.items}" varStatus="status">
<h:outputText value="#{item.title}: "/>
<!-- I want to re-render only a single one of these fields -->
<h:outputText id="valueContainer" value="#{item.value}"/><br/>
</ui:repeat>
</h:form>
Теперь я хочу перерисовать (только) valueContainer
определенного элемента в этом списке , используя AJAX (скажем, элемент с индексом 1). Я уже попробовал все эти комбинации без удачи:
<!-- Works, but renders all items: -->
<f:ajax render=":form"/>
<!-- This is what I actually want to achieve (does not work, comp. not found): -->
<f:ajax render=":form:repeatContainer:1:valueContainer"/>
<!-- Does not work (component not found): -->
<f:ajax render=":form:repeatContainer"/>
<!-- Does not work (component not found): -->
<f:ajax render=":form:repeatContainer:1"/>
<!-- Does not work (component not found): -->
<f:ajax render=":form:1"/>
<!-- Does not work (component not found): -->
<f:ajax render=":form:1:valueContainer"/>
<!-- Does not work (no error message, but does nothing): -->
<f:ajax render=":form:repeatContainer:valueContainer"/>
Мои требования включают в себя:
- Мне нужно идентифицировать компонент для
перерисовать с абсолютным идентификатором
путь , потому что кнопка, которая
запускает обновление где-то
совершенно разные в компоненте
дерево.
- Перерисовка всей страницы или
Форма (с использованием
@all
/ @form
)
бесполезно для меня, потому что такого рода
ставит под сомнение, почему я использую JSF / AJAX
вообще ...
- Мне нужно добиться того же самого с помощью ячеек PrimeFaces
<p:dataGrid>
(т.е. обновить только определенный подкомпонент конкретной ячейки), но я предполагаю, что это сводит к той же проблеме.
Полагаю, должно быть простое решение, которое я сейчас пропускаю?!