如何在Primefaces'上添加延迟(例如300ms)。 AjaxStatus会显示出来。现在,当Ajax请求未决时,它会立即显示。这很麻烦,比如在" onkeyUp"每个键击使一次瞬间加载对话的事件。
这是我的AjaxStatus加载指标组件:
<p:ajaxStatus id="startAjax" onstart="PF('start').show();" oncomplete="PF('start').hide();" >
</p:ajaxStatus>
<p:dialog widgetVar="start" showHeader="false" resizable="false">
<h:graphicImage value="#{resource['/images/loading.gif']}"></h:graphicImage>
</p:dialog>
答案 0 :(得分:14)
你需要将你的PF(&#39; start&#39;。)start()包含一个将延迟调用它的函数。此外,onComplete处理程序应检查您是否有待显示和取消它们的待处理状态。这是为了避免ajax在显示状态之前完成的情况。
代码应该是这样的(未经测试)
<p:ajaxStatus id = "startAjax" onstart = "startHandler();" oncomplete = "endHandler();"/>
<script>
var ajaxInProgress;
function startHandler() {
ajaxInProgress = setTimeout(function () {
PF('start').show();
}, 3000);
}
function endHandler() {
clearTimeout(ajaxInProgress);
PF('start').hide();
ajaxInProgress = null;
}
</script>
答案 1 :(得分:1)