每个p:progressBar的更新间隔都会出现ajax状态对话框

时间:2016-12-22 22:15:15

标签: jquery ajax jsf primefaces

我的UI中有一个进度条。我有一个常见的ajax加载弹出对话框,我在ajax更新期间显示,例如我在按钮的onclick属性中显示它并将其隐藏在oncomplete上。 但问题是加载对话框出现在其上的进度条的每个间隔更新一小段时间然后再次消失。在UI中看起来很糟糕。我想要的是避免在我的进度条上的每个更新间隔期间显示此加载对话框。我必须为我的进度条设置ajax = true,因为我正在从辅助bean中读取进度。 可能有办法使用任何Jquery函数,例如ajaxstart()?我正在使用primefaces 3.5。

提前致谢。

2 个答案:

答案 0 :(得分:1)

首先, ajax状态是ajax请求的全局。如果您的视图中有多个ajax事件,其中一些事件需要花费很少的时间才能加载,而且无需显示进度条,您可以选择以下选项:

  1. 如果您的视图中没有太多的ajax事件,那么设置 global="false"您不希望更新哪一个。
  2. blockUI用于要显示ajax状态的组件。您可以像以下一样使用它:
  3. <p:dataTable id="blockMe" ...>
       <p:commandButton id="save" ...>
    </p:dataTable>
    
    <p:blockUI block="blockMe" trigger="save" />
    

    或者像这样:

    <p:pickList widgetVar="blockMe" ...>
       <p:ajax event="transfer" onstart="blockMe.show()" oncomplete="blockMe.hide()" ...>
    </p:pickList>
    
    <p:blockUI widgetVar="blockMe">
       LOADING<br />
       <p:graphicImage name="img/ajaxloadingbar.gif"/>
    </p:blockUI>
    

答案 1 :(得分:0)

我已经用Jquery的ajaxStart()解决了我的问题:

if

并点击按钮,我将其设置为true,因为&#34; inProgress = true;&#34;