如何在父组件的ajax更新中排除子组件?

Posted

技术标签:

【中文标题】如何在父组件的ajax更新中排除子组件?【英文标题】:How to exclude child component in ajax update of a parent component? 【发布时间】:2012-09-18 20:31:46 【问题描述】:

我在我的代码中使用 PrimeFaces <p:ajax> 标记。我们如何在更新父组件的 ajax 调用中排除子组件的更新?

【问题讨论】:

【参考方案1】:

如果您至少使用 PrimeFaces 3.3,那么您可以为此使用 PrimeFaces Selectors。这允许您在 PrimeFaces ajax 组件的processupdate 属性中使用jQuery CSS selector syntax。

例如:

<h:form>
    <h:inputText ... />
    <h:inputText ... />
    <h:inputText ... styleClass="noupdate" />
    <h:inputText ... />
    <h:inputText ... />
    <p:commandButton ... update="@(form :not(.noupdate))"/>
</h:form>

此示例将更新整个表单,除了在客户端具有 class="noupdate" 的输入。

如果你想更新某个组件的所有子组件,除了一个,用周围组件(或类或...)的 id 替换“form”

<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))"/>

只要确保您使用完整的客户端 ID。

另见:

How do PrimeFaces Selectors as in update="@(.myClass)" work?

【讨论】:

感谢您的回答!我不知道可以在 Primefaces 更新属性中使用 jQuery 选择器。 该语法是否也会在页面上提交其他表单? 如果你想以这种方式更新两个元素,PF3.5 出于某种原因不允许使用update="@(form :not(.noupdate)),otherPanel"(抛出异常)但允许update="otherPanel,@(form :not(.noupdate))" @BalusC 我正在使用 v3.5。感谢您提供有关如何提问的快速教程,这真的很有帮助。 如何只用 JSF 做同样的事情?

以上是关于如何在父组件的ajax更新中排除子组件?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Vue.js 在父组件中更新子组件中的数据?

如何在父组件中强制刷新子组件

在父组件的值更改时更新子组件中的值

Angular 2 Dart:如何在父组件与路由器和子组件之间共享变量?

如何在父组件中使用子组件?

如何在父组件中使用来自 Vue.js 子组件的数据?