如何在更新消息后停止`<p:poll interval =“3”update =“messages”>标记</p:poll>

时间:2012-06-20 13:11:27

标签: jquery jsf

如何在更新邮件后停止<p:poll interval='3' update='messages'/>标记,然后在关闭邮件时重新启动它?

基本上,我有这段代码:

<pe:layoutPane id="south" position="south" size="70">
   <p:messages id="messages" autoUpdate="true" >  
      <script>
          jQuery('#messages').effect("pulsate", {times:5}, 1000 );
          jQuery('#messages').show();
       </script>
  </p:messages>
  <h:form id="pollF">
      <p:poll interval="10" listener="#{alarmsBean.checkAlarms()}" update=":messages" partialSubmit="true" widgetVar="poll"/>
  </h:form>
</pe:layoutPane>

看起来Primefaces能够调用poll.stop()和poll.start(),但问题是它们通过按钮上的onclick事件展示了该功能。

我的问题是我这里没有按钮而且不想要它们。我希望poll.stop()在messages标记更新一次时被调用。我希望在关闭messages标签时调用poll.start()。

1 个答案:

答案 0 :(得分:0)

包含外部面板并通过民意调查更新。然后在小组中让您的条件停止投票。不确定这有多高效但是有效。

<p:panel id="topPanel" style="border-color: white" > 
      <script>
            function stopMe(){
                new window().refresh();
                //poll.stop(); // I just refresh the window that stops the poll as I expereinced issue with pool.stop() while using dynamically
            }
          </script>
        <c:if test="${bean.var}"> //set a boolean after setting your message in your bean
           <script> stopMe() </script>
       </c:if>
        <p:poll interval="10" widgetVar="poll"  autoStart="true" update=":topPanel, :messages" />

</p:panel>