Как исключить дочерний компонент в ajax-обновление родительского компонента? - программирование
Подтвердить что ты не робот

Как исключить дочерний компонент в ajax-обновление родительского компонента?

Я использую тэг PrimeFaces <p:ajax> в моем коде. Как мы можем исключить дочерний компонент из обновления в ajax-вызове, который обновляет родительский компонент?

4b9b3361

Ответ 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))"/>

Просто убедитесь, что вы используете полный идентификатор клиентской стороны.