Primefaces选择器:如何在更新最近的表单时排除某些组件?

时间:2013-04-03 14:28:26

标签: jsf-2 jquery-selectors primefaces

我正在使用PrimeFaces commandButton发出Ajax请求 我应该设置update属性,以便更新整个父表单,除了某些特定组件(假设我用styleClass="noupdate"标记了它们)。
我正在使用PrimeFaces 3.5,所以我认为PrimeFaces JQuery选择器可能有所帮助 我试过这样的事情:

<!-- ...some inputs/labels to be updated here... -->
<p:overlayPanel styleClass="noupdate">
    <!-- ...some inputs/labels to be updated here... -->
    <p:commandButton id="btnDoIt" value="Do it" 
            update="@(this.closest('form') :not(.noupdate))"/>  
</p:overlayPanel>

但它不起作用(我得到一个JavaScript语法错误) 有没有办法得到我需要的东西?
请注意:
1)表单ID未知,因为该按钮是复合组件的一部分,可以由不同视图中的任何表单托管 2)在我的例子中,<p:overlayPanel>本身不得更新,但任何后代组件都不能更新 3)视图中有多个表单,我应该只处理“当前”表单。

提前感谢任何人都可以帮助我。

1 个答案:

答案 0 :(得分:3)

PrimeFaces selectors中没有this这样的内容。在PrimeFaces选择器中肯定没有像$.closest()这样的jQuery函数。它只是一个纯jQuery-compatible CSS selector,而不是一些JavaScript代码。

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

另见: