仅当在Primefaces中完成轮询时,如何调用组件上的更新。从视图

时间:2019-05-29 06:20:45

标签: jsf primefaces

在每个时间间隔调用update =“”。有没有一种方法可以仅在轮询停止并且仅一次轮询时调用更新?

示例:在投票停止后,如何只更新一次按钮片段

<p:poll interval="2" update="@(.button-fragment)" stop="#{stopMethod()}">

编辑:我想从视图中完成

1 个答案:

答案 0 :(得分:3)

除了您的投票永不停止外,我还会做类似的事情

<p:poll interval="2" stop="isPollStopped()" listener="updateOnPollStop()">

并在视图bean中

public boolean isPollStopped() {
    return ...;
}

public void updateOnPollStop() {
    final boolean pollStopped = this.isPollStopped();

    if (pollStopped) {
        RequestContext.getCurrentInstance().update("@(.button-fragment)");
    }
}

编辑:

完全没有经过测试,但这也许可行:

<p:poll interval="2" oncomplete="handlePollComplete(xhr, status, args)" stop="#{stopMethod()}">

function handlePollComplete(xhr, status, args) {
    if (!PF(<YOUR_POLL_ID>).active) {
        PF(<YOUR_UPDATEE_ID>).update()
    }
}

编辑2(使用remoteCommand

<p:remoteCommand name="updateOnPollStop" update="@(.button-fragment)"/>
<p:poll widgetVar="myPoll" interval="2" oncomplete="handlePollComplete(xhr, status, args)" stop="#{stopMethod()}">

function handlePollComplete(xhr, status, args) {
    if (!PF('myPoll').active) {
        updateOnPollStop()
    }
}