在ajax更新后,Primefaces blockUI停止工作

hyp*_*man 9 ajax blockui primefaces jsf-2

我正在尝试创建一个在忙碌时显示blockUI的数据表,而且我大部分都成功了.现在,当我单击两个commandButtons中的任何一个时,它会变灰并显示"正在加载...",通过单击标题对数据表进行排序,或者通过数据表进行分页.你可以在下面看到它的代码.

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

  • 加载页面
  • 单击数据表头 - blockUI出现,直到表完成排序
  • 单击其中一个数据表页面导航按钮 - 将显示blockUI,直到加载页面
  • 单击commandButtons之一 - blockUI出现,直到按钮的actionListener完成
  • 单击数据表头 - 表排序,但不显示blockUI.
  • 单击其中一个数据表页面导航按钮 - 页面加载,但不显示blockUI
  • 单击commandButtons之一 - 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>
Run Code Online (Sandbox Code Playgroud)

sie*_*z0r 20

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>
Run Code Online (Sandbox Code Playgroud)

  • 我有同样的问题,但你的答案解决了..我把`blockui`放在表格之外,这就是为什么我有一个问题很好谢谢男人(Y) (2认同)