Estou com um problema referente ao primeFaces. Tenho uma aplicação onde uma pagina tem varias escutas Observable. Como por exemplo:
<h:form id="idFormDebate">
<p:poll id="updateEscutarPainelDebate" interval="1"
listener="#{tela.escutarPaginaPainelDebate()}" process="idFormDebate"/>
</h:form>
O método
public void escutarPaginaPainelDebate();
É chamado corretamente a cada 1 interval, mas por algum motivo junto ao mesmo é invocado outro método qual não deveria ser chamado.
Com a seguinte assinatura:
public boolean isExibirDebate()
Fiz varias analises e não consegui encontrar o motivo do problema.
Segue partes do código para analise.
- O primeiro HTML chamado é a tela que contem esse codigo, contendo o metodo
public boolean mostrarAgenda();
qual faz a chamada do método
public boolean isExibirDebate()
Nessa tela temos varios Poll de escuta para atender a chamada do método mostrarAgenda(). Mas os métodos que não fazem uma direta ao isExibirDebate() mas sim um update no id do
<p:outputPanel id="idAgendaExibir">
public void escutarPaginaPainelPresentes() {
if (ControladorasEscuta.escutarPainelPresentes != 0) {
RequestContext context = RequestContext.getCurrentInstance();
context.update("idAgendaExibir");
context.update("idAtualizarPresentes");
ControladorasEscuta.escutarPainelPresentes = 0;
}
}
```
Após fazer todo tratamento de exibição da tela principal eu permito que a tela
```
<ui:include src="/WEB-INF/reuniao/painel-agenda.xhtml" />
```
Seja exibida ou melhor, inclusa mais informações na tela principal. Mas quando eu chama o mesmo por algum motivo
os dois poll que tenho na tela painel-agenda.xhtml
```
<h:form id="idFormDebate">
<p:poll id="updateEscutarPainelDebate" interval="1"
listener="#{tela.escutarPaginaPainelDebate()}" process="idFormDebate"/>
</h:form>
<h:form id="formUpdadeteTableTiemsPoll">
<p:poll id="updateTableTimesPoll" interval="1"
update="idTableParticipantes,idDebateTimeTr" process="formUpdadeteTableTiemsPoll"/>
</h:form>
```
Por algum motivo alem das atualizaçoes que tem que ser feita o metodo .
```
public boolean isExibirDebate()
```
É chamado varias vezes sem parar, sendo que não faço chamada dele.
```
Tela principal
<p:outputPanel id="idAgendaExibir">
<p:outputPanel rendered="#{tela.mostrarAgenda()}">
<div class="col-md-7">
<ui:include src="/WEB-INF/reuniao/painel-agenda.xhtml" />
</div>
<div class="row">
<div class="col-md-5">
<ui:include src="/WEB-INF/reuniao/painel-presentes.xhtml" />
</div>
</div>
</p:outputPanel>
</p:outputPanel>
```
Obrigado, tentei explicar da melhor forma, existe muita informação para explicar, mas as vezes não estou analisando algo por falta e conhecimento.