Jsf 在Primefaces ajaxStatus中添加异常以允许datatable上的rowDblselect事件
我有一个datatable,它有一个rowSelect ajax事件,用于选择一行并在一些底部面板上显示一些额外信息,还有一个rowDblselect ajax事件,用于在编辑窗口中打开该记录Jsf 在Primefaces ajaxStatus中添加异常以允许datatable上的rowDblselect事件,jsf,primefaces,Jsf,Primefaces,我有一个datatable,它有一个rowSelect ajax事件,用于选择一行并在一些底部面板上显示一些额外信息,还有一个rowDblselect ajax事件,用于在编辑窗口中打开该记录 <p:ajax event="rowSelect" listener="#{myBean.onSagRowSelect}" update=":bottomPanel" /> <p:ajax event="rowDblselect" listener="#{myBean.onSagRowD
<p:ajax event="rowSelect" listener="#{myBean.onSagRowSelect}" update=":bottomPanel" />
<p:ajax event="rowDblselect" listener="#{myBean.onSagRowDblClick}" update=":content" onstart="startWait();" oncomplete="stopWait();"/>
在我们添加了一个ajaxStatus组件之前,这个组件可以在ajax调用时显示加载条gif,让用户知道页面中发生了什么。问题是这个ajaxSTatus组件正在阻止我的rowDblselect事件,现在它只会触发rowSelect事件,即使我双击一行
<p:ajaxStatus onstart="PF('loadingDialog').show()" onsuccess="PF('loadingDialog').hide()" />
<p:dialog widgetVar="loadingDialog" modal="true" draggable="false" closable="false" resizable="false" showHeader="false">
<p:graphicImage name="../images/ajaxloadingbar.gif" />
</p:dialog>
我们使用的是PrimeFaces5.2
是否有任何方法可以配置ajaxStatus以延迟onstart或类似操作,从而允许双击事件完成
欢迎就此问题提供任何帮助/建议。谢谢大家! 我自己没有尝试过,但我认为可以使用JavaScript setTimeout延迟显示所有事件的对话框,如下所示:
<p:ajaxStatus onstart="setTimeout(function() { PF('loadingDialog').show(); }, 500);"
onsuccess="PF('loadingDialog').hide()" />
顺便说一下,我认为在这种情况下,您应该真正使用oncomplete而不是onsuccess,因为如果ajax请求由于某种原因失败,对话框可能会保持显示,从而由于其形式而阻塞您的应用程序
<p:ajax event="rowSelect" listener="#{myBean.onSagRowSelect}" update=":bottomPanel"
global="false"
onstart="setTimeout(function() { PF('loadingDialog').show(); }, 500);"
oncomplete="PF('loadingDialog').hide();" />