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

Jsf 如何仅在Primefaces中完成轮询时调用组件更新。从视图,jsf,primefaces,Jsf,Primefaces,每次间隔都会调用update=”“。是否有方法仅在轮询停止时调用更新,并且只调用一次 Eksample:当轮询停止时,如何仅更新一次按钮片段 <p:poll interval="2" update="@(.button-fragment)" stop="#{stopMethod()}"> 编辑:我想从视图中执行此操作除了您的投票永不停止之外,我还会执行类似的操作 <p:poll interval="2" stop="isPollStopped()" listener="u

每次间隔都会调用update=”“。是否有方法仅在轮询停止时调用更新,并且只调用一次

Eksample:当轮询停止时,如何仅更新一次按钮片段

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


编辑:我想从视图中执行此操作

除了您的投票永不停止之外,我还会执行类似的操作

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

完全未经测试,但这可能有效:

<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()
    }
}

谢谢你的回答!如果可能的话,我想从这个角度来做这一切。我更新了描述哦?关于
PF(“@(.button fragment)”,从来都不是什么新鲜事。update()
必须尽快尝试。很棒的功能@Kukeltje不确定我第一次引用要更新的小部件,所以我编辑了我的答案,注意PF使用widgetVar,而不是客户端。你确定不需要更新组件吗?我在小部件JS代码中找不到更新函数。然后在javascript中执行相同的操作。。。但既然你需要通知服务器,你就需要一个远程命令。或重写轮询“停止”javascript实现以执行最终轮询单独使用Primefaces组件无法完成此操作?是的,javascript和远程命令。。。但不仅仅是民意调查。因为这是一个非常非常不常见的用例,组件只是具有经常使用的功能。您是第一个请求此进一步进行的人:无论您是否找到问题的解决方案,为Primefaces注册功能请求以添加
p:poll
的“onfinished”或“onstopped”侦听器对我来说似乎是一个有效的请求!
<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()
    }
}
<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()
    }
}