如何在Primefaces的AjaxStatus显示时添加延迟(例如300ms).现在,当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>
你需要用一个函数来包装你的PF(‘start’).start(),它会延迟调用它.此外,onComplete处理程序应检查您是否有待显示和取消它们的待处理状态.这是为了避免ajax在显示状态之前完成的情况.
原文链接:https://www.f2er.com/ajax/159941.html代码应该是这样的(未经测试)
<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>