PrimeFaces中不同组件的不同Ajax状态

luk*_*kas 13 primefaces jsf-2

在我的网页上,我使用了模态的全局ajax状态.也就是说,当存在ajax调用时,阻止用户执行其他操作并被迫等待.像这儿:

http://www.primefaces.org/showcase-labs/ui/ajaxStatusScript.jsf

但是,页面上的所有组件都不需要这种行为.例如,对于自动完成,在自动完成组件旁边使用非阻塞功能会更好.在RichFaces中,自动完成组件有状态属性.

在PrimeFaces(3.4 SNAPSHOT)中,有没有办法如何在页面上有两个不同的ajax状态,根据需要独立触发它们?

谢谢,卢卡斯

Rav*_*avi 10

您可以使用global属性是否触发ajaxStatus.例如,将其设置为false将不会触发像这样的ajaxStatus:

<p:autoComplete id="acSimple" value="#{autoCompleteBean.txt1}" 
completeMethod="#{autoCompleteBean.complete}" global="false"/>
Run Code Online (Sandbox Code Playgroud)

对于使用ajax更新的其他组件.你可以这样做:

<p:inputText value="#{autoCompleteBean.txt1}">
    <f:validateLength minimum="2" /> 
    <p:ajax global="false" update="email" event="keyup"/>
</p:inputText>
Run Code Online (Sandbox Code Playgroud)

更新:如果你想要两个状态,那么写下你自己的对话框,如下所示:

<p:dialog widgetVar="status" modal="true" closable="false">
   Please Wait
</p:dialog>

<p:inputText value="#{autoCompleteBean.txt1}">
    <f:validateLength minimum="2" /> 
    <p:ajax global="false" onstart="status.show()" oncomplete="status.hide()" update="email" event="keyup"/>
</p:inputText>
Run Code Online (Sandbox Code Playgroud)

  • Primefaces 5.1不再具有"global"这个属性.任何建议.对于自动完成组件. (2认同)

leo*_*leo 8

在Primefaces 5.1中,您将看到Ravi解决方案的警告,它将无法正常工作.

  27-Mar-2015 14:35:41.877 WARNING [http-apr-8080-exec-2] org.primefaces.component.autocomplete.AutoCompleteRenderer.encodeScript The process/global/onstart/oncomplete attribute of AutoComplete was removed. Please use p:ajax with the query event now
Run Code Online (Sandbox Code Playgroud)

Primefaces 5.1的正确解决方案是添加

 <p:ajax event="query" global="false"/>
Run Code Online (Sandbox Code Playgroud)

在autoComplete标记内.