【发布时间】:2016-10-13 11:17:18
【问题描述】:
如何在 Primefaces 的 AjaxStatus 显示时添加延迟(例如 300 毫秒)。现在,当有一个 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>
【问题讨论】:
-
您可以使用 primefaces 扩展
<pe:timer>并从定时器调用 ajaxStatus 或onShow属性在<p:dialog>中可用,从那里调用定时器,它不会做任何事情,只是等待然后控制将返回将显示对话框和 ajaxStatus。 -
@techipank,pe:timer 似乎已被弃用。我将 Primefaces Extensions 添加到 maven 依赖项和命名空间 xmlns:pe="primefaces.org/ui/extensions" 和 pe: 仅提供时间线和时间选择器组件。没有计时器。也许
也合适 -
使用您自己的 Javascript 函数:
onstart="myStart('start')"并在function myStart(pfo) {中使用window.setTimeout()调用PF(pfo).show() -
@holger 是对的。所有纯 JavaScript。与 ajax、jsf 或 PrimeFaces 无关
标签: ajax jsf primefaces