0

如何在<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() 在消息标签更新一次时被调用。我希望 poll.start() 在消息标签关闭时被调用。

4

1 回答 1

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>
于 2012-07-03T12:12:32.343 回答