gpt4 book ai didi

javascript - 无法停止 primefaces 投票

转载 作者:数据小太阳 更新时间:2023-10-29 06:13:09 26 4
gpt4 key购买 nike

我正在实现一些需要公共(public)轮询才能从服务器获取新值的对话框。我正在尝试使用 p:poll,但不幸的是我无法阻止它。我在用户单击一个对话框中的按钮时开始投票,并在用户单击子对话框中的按钮时尝试停止投票。这是我用来启动和停止投票的代码:

第一个对话框:

<p:poll autoStart="false" widgetVar="pollQtdDisponivelCarregamento" immediate="true"
update="labelQuantidadeDisponivelCarregamento labelQuantidadeDisponivelItem"
listener="#{atualizadorQuantidadeDisponivelProduto.atualizarQuantidadeDisponivel(modeloPopupCarregarProduto.produtoSelecionado)}" />
<p:commandButton action="#{controladorPopupCarregarProduto.abrir}"
value="#{vendaMsg['popup.pre_venda.botao.adicionar_produto']}"
title="#{vendaMsg['popup.pre_venda.botao.adicionar_produto.descricao']}"
update="@form" onclick="pollQtdDisponivelCarregamento.start()" />

子对话框:

<p:commandButton value="OK" style="float:right" immediate="true"
action="#{controladorPopup.fechar}" update="@form"
onsuccess="pollQtdDisponivelCarregamento.stop();" />

我无法理解的一件事是:当我使用 Firebug 调试中断 javascript 执行时,轮询正确停止,但当我不这样做时,它就不会停止。有人知道我该如何解决这个问题??

最佳答案

我在“民意调查”组件中遇到了类似的问题(谷歌派我来这里)。据我所知,您的标记有两个问题。我使用的是 Primefaces 3.0M4

问题1

使用 <p:poll clientVar="myPoll"/>将创建一个可使用 window.myPoll 访问的 javascript 对象.如果重新呈现包含表单(请参阅您的“更新”属性),则此属性将被覆盖。问题是在幕后使用了“window.setInterval”。如果轮询器在被替换之前未停止,则此间隔将丢失。

解决方案:

  1. 您可以创建顶级 <form>仅包含投票组件。
  2. onclick="pollQtdDisponivelCarregamento.start(); return false;"防止表单被发送到服务器。 (我怀疑这是你的意图)

问题2

poll.start()不检查它是否已经在运行。调用它两次将导致安排另一个 间隔。第一个的 id 丢失了,但它仍然在那里向您的服务器发送请求。尝试快速单击“第一个对话框”中的按钮。

解决方案:

通过调用 poll.isActive() 检查它是否已经在运行首先。

关于javascript - 无法停止 primefaces 投票,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8182509/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com