加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在JSF上延迟Primefaces AjaxStatus?

发布时间:2020-12-16 01:36:31 所属栏目:百科 来源:网络整理
导读:如何在Primefaces的AjaxStatus显示时添加延迟(例如300ms).现在,当Ajax请求待处理时,它会立即显示.这对于“onkeyUp”事件来说很麻烦,例如当每个按键行程使加载对话框瞬间启动时. 这是我的AjaxStatus加载指示器组件: p:ajaxStatus id="startAjax" onstart="PF
如何在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在显示状态之前完成的情况.

代码应该是这样的(未经测试)

<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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读