Primefaces 如何使用事件onclick按钮停止所有p:poll

Primefaces 如何使用事件onclick按钮停止所有p:poll,primefaces,Primefaces,例如,我有20张图表。有不同的刷新时间。当updateChart时,我会做一些事情并更新success <c:foreach var="chart" items="#{bean.charts}> <p:poll interval="#{chart.timeRefresh}" listener="#{bean.updateChart(chart)}"/> <div>..draw one-by-one chart here.</div> <

例如,我有20张图表。有不同的刷新时间。当
updateChart
时,我会做一些事情并更新success

<c:foreach var="chart" items="#{bean.charts}>
  <p:poll interval="#{chart.timeRefresh}" listener="#{bean.updateChart(chart)}"/>
  <div>..draw one-by-one chart here.</div>
</c:foreach>
<p:commandButton id="showInforDialog" actionlistener="#{bean.dosomething()}" onsuccess="PF('dlgInfor').show();"/>
但我不知道怎么做。请帮帮我!或者你有了新的想法。
我不明白为什么会依次处理20个请求,或者我错了首先,轮询Ajax操作默认是同步执行的。因此,如果执行20个操作,它们将排队并一次执行一个。这可能需要一段时间,并解释了您正在经历的延迟。将
p:poll
组件的
async
属性设置为
true
,以防止出现这种情况

那么,为什么首先使用20次民意测验呢?仅仅使用1个投票不是更干净吗?您可以指定需要更新的多个组件,甚至可以使用。这还可以防止客户端甚至服务器同时处理的连接数不足

如果确实要停止多个轮询,请使用
widgetVar=“pollXxx”
以便使用JavaScript停止它们:

PF('poll1').stop();
PF('poll2').stop();
...

首先,默认情况下,轮询Ajax操作是同步执行的。因此,如果执行20个操作,它们将排队并一次执行一个。这可能需要一段时间,并解释了您正在经历的延迟。将
p:poll
组件的
async
属性设置为
true
,以防止出现这种情况

那么,为什么首先使用20次民意测验呢?仅仅使用1个投票不是更干净吗?您可以指定需要更新的多个组件,甚至可以使用。这还可以防止客户端甚至服务器同时处理的连接数不足

如果确实要停止多个轮询,请使用
widgetVar=“pollXxx”
以便使用JavaScript停止它们:

PF('poll1').stop();
PF('poll2').stop();
...

PrimeFaces没有池组件。有一个轮询组件。关于实际问题,我有点不清楚,你能不能澄清一下,Faces没有池组件。有一个轮询组件。关于实际问题,我有点不清楚,你能澄清一下吗。。。现在有道理了。不知道为什么我错过了这个。我个人甚至不会使用轮询,而是使用推送,并在客户端(例如,如果有许多客户端正在观看图表)上使用一个小的随机延迟来更新它们即使您将async设置为true,也很可能受浏览器可以/将要执行的同时请求数的限制。说得好。它在许多方面都远远没有效率。我会选择简单地使用一个投票并更新多个组件。在我的情况下,图表的数量是动态的10、15、20或更多。有不同的刷新时间。例:图1:3s,图2:5s,图3:10s。。。。所以,我不能只用一次投票。在这里,我使用的是omnifaces。@TrươngHuy您的问题是“所有图表都有相同的刷新时间和相等的1”。啊。。。现在有道理了。不知道为什么我错过了这个。我个人甚至不会使用轮询,而是使用推送,并在客户端(例如,如果有许多客户端正在观看图表)上使用一个小的随机延迟来更新它们即使您将async设置为true,也很可能受浏览器可以/将要执行的同时请求数的限制。说得好。它在许多方面都远远没有效率。我会选择简单地使用一个投票并更新多个组件。在我的情况下,图表的数量是动态的10、15、20或更多。有不同的刷新时间。例:图1:3s,图2:5s,图3:10s。。。。所以,我不能只用一次投票。在这里,我使用的是omnifaces。@TrươngHuy您的问题是“所有图表都有相同的时间刷新和相等的1”。