如何在父组件的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 组件的process
和update
属性中使用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更新中排除子组件?的主要内容,如果未能解决你的问题,请参考以下文章