bre*_*leq 5 javascript polling primefaces jsf-2
我正在实现一些需要通用轮询的对话框,以从服务器获取新值.我正在尝试使用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()" />
Run Code Online (Sandbox Code Playgroud)
childDialog:
<p:commandButton value="OK" style="float:right" immediate="true"
action="#{controladorPopup.fechar}" update="@form"
onsuccess="pollQtdDisponivelCarregamento.stop();" />
Run Code Online (Sandbox Code Playgroud)
我无法理解的一件事是:当我使用Firebug调试打破javascript执行时,轮询会正确停止,但是当我不这样做时,它就不会停止.有人知道怎么解决这个问题?
我在"民意调查"组件中遇到了类似的问题(谷歌发送给我这里).据我所知,你的标记有两个问题.我使用的是Primefaces 3.0M4.
使用<p:poll clientVar="myPoll"/>将创建一个可访问的javascript对象window.myPoll.如果重新呈现包含的表单(请参阅"更新"属性),则会覆盖此属性.问题是在引擎盖下使用'window.setInterval'.如果轮询器在更换之前未停止,则此间隔将丢失.
<form>仅包含轮询组件的顶级.onclick="pollQtdDisponivelCarregamento.start(); return false;"防止将表单发送到服务器.(我怀疑这是你的意图)poll.start()不检查它是否已经运行.调用它两次将导致另一个间隔被安排.第一个的ID丢失了,但它仍然在那里向您的服务器发送请求.尝试快速单击"第一个对话框"中的按钮.
poll.isActive()首先通过呼叫检查它是否已经运行.
| 归档时间: |
|
| 查看次数: |
5693 次 |
| 最近记录: |