无法阻止素数民意调查



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

firstDialog:

<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()" />

childDialog:

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

我不能理解的一件事是:当我使用Firebug调试中断javascript执行时,投票正确停止,但当我不这样做时,它只是不停止。有人知道我怎么解决这个问题吗??

我有类似的问题与'poll'组件(谷歌送我到这里)。据我所知,你们的标价有两个问题。我使用的是Primefaces 3.0M4

问题1

使用<p:poll clientVar="myPoll"/>将创建一个可以使用window.myPoll访问的javascript对象。如果包含的表单被重新呈现(参见您的'update'属性),此属性将被覆盖。问题是它使用了"窗口"。下面的setInterval。如果轮询器在被替换之前没有停止,则此间隔将丢失。

解决方案:

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

问题2

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

解决方案:

先调用poll.isActive()检查它是否已经运行

相关内容

  • 没有找到相关文章

最新更新