Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';不要停止投票_Javascript_Jsf 2_Primefaces_Polling - Fatal编程技术网

Javascript Can';不要停止投票

Javascript Can';不要停止投票,javascript,jsf-2,primefaces,polling,Javascript,Jsf 2,Primefaces,Polling,我正在实现一些对话框,这些对话框需要一个公共轮询来从服务器获取新的值。 我正在尝试使用p:poll,但不幸的是我无法阻止它。 我在用户单击一个对话框中的按钮时启动轮询,并在用户单击子对话框中的按钮时尝试停止轮询。这是我用来启动和停止投票的代码: 第一个对话框: <p:poll autoStart="false" widgetVar="pollQtdDisponivelCarregamento" immediate="true" update="labelQuantidadeDisp

我正在实现一些对话框,这些对话框需要一个公共轮询来从服务器获取新的值。 我正在尝试使用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 使用
将创建一个可使用
window.myPoll
访问的javascript对象。如果重新提交包含表单(请参见“更新”属性),则会覆盖此属性。问题是在引擎盖下使用了“window.setInterval”。如果在更换Being之前未停止轮询器,则此间隔将丢失

解决方案:
  • 您可以创建仅包含轮询组件的顶级
  • onclick=“pollqtdisponsivelcarregamento.start();return false;”
    阻止表单发送到服务器。(我怀疑这是你的意图)
  • 问题2
    poll.start()
    不检查它是否已在运行。调用它两次将导致安排另一个间隔。第一个id已丢失,但仍在向服务器发送请求。尝试快速单击“第一个对话框”中的按钮

    解决方案: 首先调用
    poll.isActive()
    检查它是否已经在运行。

    顺便说一句。您写了“当我使用Firebug中断javascript执行时”。但是在哪里呢?