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