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

Jsf 2 PrimeFaces中不同组件的不同Ajax状态,jsf-2,primefaces,Jsf 2,Primefaces,在我的网页上,我使用的是模式一的全局ajax状态。也就是说,当存在ajax调用时,用户将被阻止执行其他操作,并被迫等待。就像这里: 但是,并非页面上的所有组件都需要这种行为。例如,对于autocomplete,最好在autocomplete组件旁边有一个非阻塞组件。在RichFaces中,自动完成组件具有状态属性 在PrimeFaces(3.4快照)中,有没有办法让页面上的两个不同ajax状态根据需要独立触发它们 谢谢, Lukas无论是否触发ajaxStatus,都可以使用全局属性。例如,将

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

但是,并非页面上的所有组件都需要这种行为。例如,对于autocomplete,最好在autocomplete组件旁边有一个非阻塞组件。在RichFaces中,自动完成组件具有状态属性

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

谢谢,
Lukas

无论是否触发ajaxStatus,都可以使用全局属性。例如,将其设置为false不会触发ajaxStatus,如下所示:

<p:autoComplete id="acSimple" value="#{autoCompleteBean.txt1}" 
completeMethod="#{autoCompleteBean.complete}" global="false"/>
<p:inputText value="#{autoCompleteBean.txt1}">
    <f:validateLength minimum="2" /> 
    <p:ajax global="false" update="email" event="keyup"/>
</p:inputText>
<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>

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

<p:autoComplete id="acSimple" value="#{autoCompleteBean.txt1}" 
completeMethod="#{autoCompleteBean.complete}" global="false"/>
<p:inputText value="#{autoCompleteBean.txt1}">
    <f:validateLength minimum="2" /> 
    <p:ajax global="false" update="email" event="keyup"/>
</p:inputText>
<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>

更新:如果需要两种状态,请编写自己的对话框,如下所示:

<p:autoComplete id="acSimple" value="#{autoCompleteBean.txt1}" 
completeMethod="#{autoCompleteBean.complete}" global="false"/>
<p:inputText value="#{autoCompleteBean.txt1}">
    <f:validateLength minimum="2" /> 
    <p:ajax global="false" update="email" event="keyup"/>
</p:inputText>
<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>

请稍候

在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
Primefaces 5.1的正确解决方案是添加

 <p:ajax event="query" global="false"/>


在自动完成标签内。

我遇到了同样的问题,这是我的解决方案(不是超级简单,但非常灵活):

如果要为页面的某些部分添加加载指示器,则需要添加两个
元素,一个用于加载指示器,另一个用于加载内容

e、 g:

JavaScript函数的代码如下所示:

函数显示加载(clazz){
console.log('showLoading'+clazz);
var loadingElements=$(clazz+'.loading');
加载元素。每个(函数(索引,el){
el.style.display='block';
});
var contentElements=$(clazz+'.content');
contentElements.each(函数(索引,el){
el.style.display='none';
});
}
函数隐藏加载(clazz){
console.log('hideLoading'+clazz);
var loadingElements=$(clazz+'.loading');
加载元素。每个(函数(索引,el){
el.style.display='none';
});
var contentElements=$(clazz+'.content');
contentElements.each(函数(索引,el){
el.style.display='block';
});
}

好吧,但是如果我想触发不同的ajax状态呢?我不想把它完全关掉。我想触发不同的行为我也对寻找一个解决方案感兴趣…你找到了工作正常的东西吗?Primefaces 5.1不再具有此属性
global
。任何建议。对于自动完成组件。这是最新的正确答案(今天!)。这在6.1中不起作用。自动完成只是停止查询。