Я использую тэг PrimeFaces <p:ajax>
в моем коде. Как мы можем исключить дочерний компонент из обновления в ajax-вызове, который обновляет родительский компонент?
Как исключить дочерний компонент в ajax-обновление родительского компонента?
Ответ 1
Если вы используете хотя бы PrimeFaces 3.3, вы можете использовать PrimeFaces Selectors для этого. Это позволяет использовать синтаксис селектора jQuery CSS в атрибутах process
и update
компонентов ajax PrimeFaces.
Например:
<h:form>
<h:inputText ... />
<h:inputText ... />
<h:inputText ... styleClass="noupdate" />
<h:inputText ... />
<h:inputText ... />
<p:commandButton ... update="@(form :not(.noupdate))"/>
</h:form>
В этом примере будет обновлена вся форма, кроме входных данных, имеющих class="noupdate"
на стороне клиента.
Если вы хотите обновить все дочерние элементы определенного компонента, кроме одного, замените "форму" на идентификатор окружающего компонента (или класса или...)
<h:form id="form">
<h:panel id="myPanel">
<h:inputText ... />
<h:inputText ... />
<h:inputText ... styleClass="noupdate" />
</h:panel>
<h:inputText ... />
<h:inputText ... />
<p:commandButton ... update="@(form :not(.noupdate))"/>
</h:form>
<p:commandButton ... update="@(#form\:myPanel :not(.noupdate))"/>
Просто убедитесь, что вы используете полный идентификатор клиентской стороны.