Daew pessoal…
Estou fazendo um cadastro de paciente, no qual tenho um botão “Localizar” que abre um Dialog
efetuando a busca e a ideia é trazer o registro do paciente de volta pra tela de cadastro.
Ou seja. cadastro -> localizar -> dialog -> cadastro.
O problema é que efetuando a busca, 2 ou 3vezes o dialog abre varias instancias de pesquisas, uma sobreposta a outra.
Acredito que a falha esta relacionada a algum Update… Estou usando ViewScoped
Código…
[code]<ui:composition
xmlns:ui=“http://java.sun.com/jsf/facelets”
xmlns:h=“http://java.sun.com/jsf/html”
xmlns:f=“http://java.sun.com/jsf/core”
xmlns:p=“http://primefaces.prime.com.tr/ui”
template="/templates/template.xhtml">
<ui:define name="title">#{msg.tituloPaciente}</ui:define>
<ui:define name="tituloConteudo">#{msg.tituloPaciente}</ui:define>
<ui:define name="content">
<h:form id="formGeral">
<p:panel header="Novo Paciente." style="width:80%; margin: 5% 10%;" >
<h:panelGrid id="painelGrid" columns="5" cellpadding="10" >
<p:commandButton value="Localizar" oncomplete="localizar.show()" cellpadding="5"/>
</h:panelGrid>
<h:form id="formCadastro">
<h:outputText value="Nome:" />
<p:inputText id="Nome" value="#{pacienteMB.paciente.nom_paciente}" />
<h:outputText value="CPF:" />
<p:inputMask id="Cpf" value="#{pacienteMB.paciente.cpf_paciente}" mask="999-999-999-99" />
</h:form>
</p:panel>
<!-- FORM PESQUISA -->
<p:dialog id="dialog" header="Localizar Paciente:" widgetVar="localizar" modal="true"
width="800" height="400" showEffect="fade" >
<p:dataTable id="tbPaciente" value="#{pacienteMB.listaPacientes}"
var="paciente" border="1" cellspacing="0">
<p:column>
<f:facet name="header">
<h:outputText value="Código" />
</f:facet>
<h:outputText value="#{paciente.cod_paciente}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Nome" />
</f:facet>
<h:outputText value="#{paciente.nom_paciente}" />
</p:column>
<p:column style="width:50px">
<p:commandButton update="formGeral" action="#{pacienteMB.editar(paciente)}"
oncomplete="localizar.hide()"
image="ui-icon ui-icon-pencil" style="width:28px;height:28px" title="Edit"/>
</p:column>
</p:dataTable>
</p:dialog>
<!-- FORM PESQUISA -->
</h:form>
</ui:define>
</ui:composition>[/code]
Limpei a tela, deixando mais limpo possivel para identificar o problema.
Qualquer ajuda é bem vinda.
Grato.
Quero entender seu problema:
1 - Você clica no botão “Localizar” abre um pop-up onde passa parâmetros para flitrar dados e pode aparecer
mais de um paciente daí você deve escolher um e será aplicado na tela… É isso? Daí o problema ocorre se após terminar
você fazer isso de novo… É isso?
Olá andre.
é isso mesmo, o dialog exibe uma lista de paciente, aonde eu seleciono um “Edit” e ele carrega para a tela de cadastro fechando o dialog.
o problema acontece na segunda chamada em diante, ele abre várias dialogs ao mesmo tempo, uma sobreposta a outra.
Estou com um o mesmo problema. Quando eu gravo a primeira vez um formulário que está em um p:dialog consigo normalmente. Daí se eu mandar fazer um update no painel dentro do dialog não consigo mais enviar o formulário com valores ai grava um registro vazio e se eu der um update no form fora do dialog quando eu abro o dialog novamente aparecem dois dialogs e o formulário não submete mais.
Se alguém achar a solução manda aê.

Apenas um teste: Tentou mudar o escopo de sessão? Caso sim, surtiu algum efeito? Pode postar o seu ManagedBean?
tenta alterar essa:
<p:commandButton value="Localizar" oncomplete="localizar.show()" cellpadding="5"/>
para
<p:commandButton value="Localizar" oncomplete="localizar.show()" cellpadding="5" update="tbPaciente"/>
e essa chamada
<p:commandButton update="formGeral" action="#{pacienteMB.editar(paciente)}" oncomplete="localizar.hide()" image="ui-icon ui-icon-pencil" style="width:28px;height:28px" title="Edit"/>
para
<p:commandButton update="formGeral" action="#{pacienteMB.editar(paciente)}" oncomplete="localizar.hide()" image="ui-icon ui-icon-pencil" style="width:28px;height:28px" title="Edit" update="formCadastro"/>
ve se da certo assim
[quote=grsouza]tenta alterar essa:
<p:commandButton value="Localizar" oncomplete="localizar.show()" cellpadding="5"/>
para
<p:commandButton value="Localizar" oncomplete="localizar.show()" cellpadding="5" update="tbPaciente"/>
e essa chamada
<p:commandButton update="formGeral" action="#{pacienteMB.editar(paciente)}" oncomplete="localizar.hide()" image="ui-icon ui-icon-pencil" style="width:28px;height:28px" title="Edit"/>
para
<p:commandButton update="formGeral" action="#{pacienteMB.editar(paciente)}" oncomplete="localizar.hide()" image="ui-icon ui-icon-pencil" style="width:28px;height:28px" title="Edit" update="formCadastro"/>
ve se da certo assim[/quote]
opa grsouza.
entao, mudei os comandos como vc passou, e quando mudo o update do Editar de ’ update=“formGeral” ’ para ’ update=“formCadastro” ’ ele nao atualiza mais os dados no formulario de cadastro na volta…
Segue o codigo como ficou…
[code] <ui:composition
xmlns:ui=“http://java.sun.com/jsf/facelets”
xmlns:h=“http://java.sun.com/jsf/html”
xmlns:f=“http://java.sun.com/jsf/core”
xmlns:p=“http://primefaces.prime.com.tr/ui”
template="/templates/template.xhtml">
<ui:define name="title">#{msg.tituloPaciente}</ui:define>
<ui:define name="tituloConteudo">#{msg.tituloPaciente}</ui:define>
<ui:define name="content">
<h:form id="formGeral">
<p:panel header="Novo Paciente." style="width:80%; margin: 5% 10%;" >
<h:panelGrid id="painelGrid" columns="5" cellpadding="10" >
<p:commandButton value="Localizar" oncomplete="localizar.show()" immediate="true"
update="tbPaciente" cellpadding="5"/>
</h:panelGrid>
<h:form id="formCadastro">
<h:outputText value="Nome:" />
<p:inputText id="Nome" value="#{pacienteMB.paciente.nom_paciente}" />
<h:outputText value="CPF:" />
<p:inputMask id="Cpf" value="#{pacienteMB.paciente.cpf_paciente}" mask="999-999-999-99" />
</h:form>
</p:panel>
<!-- FORM PESQUISA -->
<p:dialog id="dialog" header="Localizar Paciente:" widgetVar="localizar" modal="true"
width="800" height="400" showEffect="fade" >
<p:dataTable id="tbPaciente" value="#{pacienteMB.listaPacientes}"
var="paciente" border="1" cellspacing="0">
<p:column>
<f:facet name="header">
<h:outputText value="Código" />
</f:facet>
<h:outputText value="#{paciente.cod_paciente}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Nome" />
</f:facet>
<h:outputText value="#{paciente.nom_paciente}" />
</p:column>
<p:column style="width:50px">
<p:commandButton action="#{pacienteMB.editar(paciente)}"
oncomplete="localizar.hide()" update="formGeral"
image="ui-icon ui-icon-pencil" style="width:28px;height:28px" title="Edit"/>
</p:column>
</p:dataTable>
</p:dialog>
<!-- FORM PESQUISA -->
</h:form>
</ui:define>
</ui:composition> [/code]
Galera… obrigado pela ajuda de todos.
Resolvi o problema, o fato estava no <h:form>, no qual o dialog estava inserido no mesmo form do cadastro.
Isolei eles e resolvido o problema…
Ficou + - assim…
[code] <h:form id=“formGeral”>
<p:panel header=“Novo Paciente.” style=“width:80%; margin: 5% 10%;” >
<h:panelGrid id="painelGrid" columns="5" cellpadding="10" >
<p:commandButton value="Localizar" oncomplete="localizar.show()" immediate="true"
update="tbPaciente" cellpadding="5"/>
</h:panelGrid>
<h:form id="formCadastro">
<h:panelGrid columns="4" cellpadding="5" >
<h:outputText value="Nome:" />
<p:inputText id="Nome" value="#{pacienteMB.paciente.nom_paciente}" />
<h:outputText value="CPF:" />
<p:inputMask id="Cpf" value="#{pacienteMB.paciente.cpf_paciente}" mask="999-999-999-99" />
</h:panelGrid>
</h:form>
</p:panel>
</h:form>
<!-- PESQUISA -->
<p:dialog id="dialog" header="Localizar Paciente:" widgetVar="localizar" modal="true"
width="800" height="400" showEffect="fade" >
<h:form id="formDialog">
<p:dataTable id="tbPaciente" value="#{pacienteMB.listaPacientes}"
var="paciente" border="1" cellspacing="0">
<p:column>
<f:facet name="header">
<h:outputText value="Código" />
</f:facet>
<h:outputText value="#{paciente.cod_paciente}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Nome" />
</f:facet>
<h:outputText value="#{paciente.nom_paciente}" />
</p:column>
<p:column style="width:50px">
<p:commandButton id="editar" action="#{pacienteMB.editar(paciente)}" update="formGeral"
oncomplete="localizar.hide()" image="ui-icon ui-icon-pencil" style="width:28px;height:28px" title="Edit"/>
</p:column>
</p:dataTable>
</h:form>
</p:dialog>
<!-- PESQUISA --> [/code]
Basicamente a solução consiste em separar os blocos da pesquisa do formulário com um form…
Fica a dica para os proximos ai. Obrigado a todos…