Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 在Primefaces ajaxStatus中添加异常以允许datatable上的rowDblselect事件_Jsf_Primefaces - Fatal编程技术网

Jsf 在Primefaces ajaxStatus中添加异常以允许datatable上的rowDblselect事件

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

我有一个datatable,它有一个rowSelect ajax事件,用于选择一行并在一些底部面板上显示一些额外信息,还有一个rowDblselect ajax事件,用于在编辑窗口中打开该记录

<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();" />