小编典典

Primefaces blockUI在Ajax更新后停止工作

ajax

我正在尝试创建一个数据表,该数据表在忙时显示一个blockUI,并且我大多数时候都成功了。现在,当我单击两个commandButtons中的任何一个,通过单击标题对数据表进行排序,或在数据表中翻页时,它都会变灰并显示“正在加载…”。您可以在下面查看其代码。

问题是,在我使用了一个commandButtons(在受阻止的元素上运行ajax更新)之后,后续操作不会触发blockUI(直到刷新页面)。例如:

  • 载入页面
  • 单击数据表头-出现blockUI,直到表完成排序
  • 单击数据表页面导航按钮之一-直到页面加载后,blockUI才会显示
  • 单击 命令按钮 之一 -出现blockUI,直到按钮的actionListener完成
  • 单击数据表标题-表进行排序,但未出现blockUI。
  • 单击数据表页面导航按钮之一-页面加载,但未出现blockUI
  • 单击命令按钮之一-actionListener运行并更新表,但未出现blockUI
  • 重新加载页面 -一切正常

将commandButtons的update =“”属性更改为ajax =“
false”会使排序/分页始终显示blockUI,而commandButtons则从不显示blockUI。

有任何想法吗?

<div class="buttonDiv">
    <p:commandButton ... update="resultsPanel" id="submitButton" ... />
    ...
    <p:commandButton ... update="resultsPanel" id="resetScenarioButton" ... />
</div>
<p:panel header="Results Grid" id="resultsPanel">
    ...
    <p:dataTable ... id="VAResults" ... >
        ...
    </p:dataTable>
    ....
</p:panel>
<p:blockUI block="resultsPanel" trigger="submitButton, resetScenarioButton, VAResults">
    Loading...
</p:blockUI>

阅读 298

收藏
2020-07-26

共1个答案

小编典典

trigger属性将jQuery侦听器绑定到指定的元素。但是,如果更新元素,绑定将丢失。我不知道它是否有效,但是您可以尝试将的<p:blockUI内部移动resultsPanel。我怀疑在更新面板时,blockUI也将更新,从而将侦听器重新绑定到数据表。

<p:panel header="Results Grid" id="resultsPanel">
    ...
    <p:dataTable ... id="VAResults" ... >
        ...
    </p:dataTable>
    ....
    <p:blockUI block="resultsPanel" trigger="submitButton, resetScenarioButton, VAResults">
    Loading...
</p:blockUI>
</p:panel>
2020-07-26