Ajuda com dialog primefaces

Bom dia, tenho um tela de cadastro de alunos, nessa há um botão que exibirá uma dialog para que seja pesquisado por CPF o responsável do aluno, o resultado dessa busca será exibido
em um datatable que possui um botão para confirmar o responsavel, confirmando o responsavel o dialog se fecha e os campos do form que o chamou deve ser carregado.

Estou com dificudade para fazer funcionar corretamente, ao clicar no botão confirmando o responsável, a tela simplesmente fecha e nem sequer chega a solicitação ao managedbean

form.xhtml

<?xml version='1.0' encoding='ISO-8859-1' ?>

<ui:composition template="/pages/templates/template.xhtml"
	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.org/ui">

	<ui:define name="content">
		<p:panel header="#{bundle.header_cadastro_aluno}">
			<h:form id="form">
				<p:panelGrid columns="2">
					<ui:include src="form.xhtml" />
				</p:panelGrid>
				<br/>
				&lt;p:panelGrid columns="2"&gt;
					&lt;p:commandButton id="btnSalvar" action="#{alunoBean.save}" value="#{bundle.btnSalvar}" ajax="false" icon="save"/&gt; 
					&lt;p:commandButton id="btnVoltar" action="#{alunoBean.list}" value="#{bundle.btnCancelar}" ajax="false" immediate="true" icon="cancel"/&gt;
				&lt;/p:panelGrid&gt; 
			&lt;/h:form&gt;
		&lt;/p:panel&gt;
	&lt;/ui:define&gt;

&lt;/ui:composition&gt;

form.xhtml

&lt;?xml version='1.0' encoding='ISO-8859-1' ?&gt;

&lt;ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:comp="http://java.sun.com/jsf/composite/componentes"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.org/ui"&gt;

	&lt;p:tabView id="tabView"&gt;

		&lt;p:tab id="tab4" title="#{bundle.responsavel}"&gt;

			&lt;p:panelGrid columns="2"&gt;

				&lt;p:outputLabel for="btnDialog"  value="#{bundle.search}" /&gt;
				&lt;p:commandButton id="btnDialog" value="#{bundle.btnSearch}" onclick="dlgResponsavel.show();return false;" icon="search"/&gt;

				&lt;p:outputLabel for="nomeResponsavel" value="#{bundle.nome}"/&gt;
				&lt;p:inputText id="nomeResponsavel" value="#{alunoBean.aluno.responsavel.nome}" requiredMessage="#{bundle.nomeResponsavel_required}" required="#{alunoBean.responsavelRequired}" style="width:300px;" &gt;
					&lt;p:ajax update="cpfResponsavel"&gt;&lt;/p:ajax&gt;
					&lt;p:ajax update="rgResponsavel"&gt;&lt;/p:ajax&gt;
				&lt;/p:inputText&gt; 
	
				&lt;p:outputLabel for="cpfResponsavel"  value="#{bundle.cpf}" /&gt;
				&lt;p:inputMask id="cpfResponsavel" value="#{alunoBean.aluno.responsavel.cpf}" mask="999.999.999-99" requiredMessage="#{bundle.cpfResponsavel_required}" required="#{alunoBean.responsavelRequired}" style="width:120px;" &gt;
					&lt;f:validator validatorId="validadorCpf"/&gt;
				&lt;/p:inputMask&gt;
					
				&lt;p:outputLabel for="rgResponsavel"  value="#{bundle.rg}" /&gt;
				&lt;p:inputText id="rgResponsavel" value="#{alunoBean.aluno.responsavel.rg}" requiredMessage="#{bundle.rgResponsavel_required}" required="#{alunoBean.responsavelRequired}" maxlength="15" style="width:100px;" /&gt; 

			&lt;/p:panelGrid&gt;
			
			&lt;p:dialog widgetVar="dlgResponsavel" header="#{bundle.selecao_responsavel}" appendToBody="true" modal="true" height="400" width="500"&gt;  

				&lt;p:panel header="#{bundle.header_search_responsavel}" &gt;
					&lt;h:form id="frmSearchResponsavel"&gt;
						&lt;p:outputLabel for="cpfResponsavel"  value="#{bundle.cpf}" /&gt;&lt;p:spacer/&gt;
						&lt;p:inputMask id="cpfResponsavel" value="#{alunoBean.searchResponsavel}" mask="999.999.999-99" style="width:120px;" &gt;&lt;p:spacer/&gt;
						&lt;/p:inputMask&gt;
						&lt;p:commandButton id="btnSearchResponsavel" actionListener="#{alunoBean.search}" value="#{bundle.btnSearch}" icon="search"/&gt;
					&lt;/h:form&gt;
				&lt;/p:panel&gt;
		
				<br/>

			    &lt;h:form id="frmListaResponsavel"&gt;
			  
				    &lt;p:dataTable
				    	id="lstListaResponsavel"
				    	var="row" 
				    	value="#{alunoBean.responsaveis}"
				        paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
				        paginatorPosition="bottom"
				        rows="5"  
				        rowsPerPageTemplate="5,10" &gt;  
	
				        &lt;p:column&gt;  
				            &lt;f:facet name="header"&gt;  
				                &lt;h:outputText value="#{bundle.nome}" /&gt;  
				            &lt;/f:facet&gt;  
				            &lt;h:outputText value="#{row.nome}" /&gt;  
				        &lt;/p:column&gt;
	
				        &lt;p:column&gt;  
				            &lt;f:facet name="header"&gt;  
				                &lt;h:outputText value="#{bundle.cpf}" /&gt;  
				            &lt;/f:facet&gt;  
				            &lt;h:outputText value="#{row.cpf}" /&gt;  
				        &lt;/p:column&gt;
	       
				         &lt;p:column style="width:32px"&gt;  
				            &lt;p:commandButton action="#{alunoBean.confirmSelectedResponsavel}" value="#{bundle.btnSelectResponsavel}" onclick="return confirm('Confirma o responsável para esse aluno?');" oncomplete="dlgResponsavel.hide();" icon="responsavel"&gt;  
				                &lt;f:setPropertyActionListener value="#{row}" target="#{alunoBean.responsavelSelected}" /&gt;
				                &lt;p:ajax update=":form:tabView:nomeResponsavel" /&gt; &lt;!--FIZ UM TESTE PARA ATUALIZAR O NOME, MAS NADA. --&gt;
				            &lt;/p:commandButton&gt;  
				        &lt;/p:column&gt;
				        
				    &lt;/p:dataTable&gt; 
			              
			    &lt;/h:form&gt;  
			&lt;/p:dialog&gt;
		&lt;/p:tab&gt;

	&lt;/p:tabView&gt;

&lt;/ui:composition&gt;

ManagedBean

public class AlunoBean {

	private AlunoResponsavel responsavelSelected;
	private DataModel&lt;Aluno&gt; alunos;
	private DataModel&lt;AlunoResponsavel&gt; responsaveis;
	
	public AlunoResponsavel getResponsavelSelected() {
		return responsavelSelected;
	}

	public void setResponsavelSelected(AlunoResponsavel responsavelSelected) {
		this.responsavelSelected = responsavelSelected;
	}

		public DataModel&lt;Aluno&gt; getAlunos() {

		try {
			setAlunos(null);
			alunos = new ListDataModel&lt;Aluno&gt;(facade.getDataModelAluno(getDataTable().getFirst(), getDataTable().getRows(), getSearch()));
		} catch (FacadeException e) {
			log.error(e);
		}

		return alunos;
	}

	public void setAlunos(DataModel&lt;Aluno&gt; alunos) {
		this.alunos = alunos;
	}

	public DataModel&lt;AlunoResponsavel&gt; getResponsaveis() {

		try {
			setResponsaveis(null);
			responsaveis = new ListDataModel&lt;AlunoResponsavel&gt;(facade.getDataModelAlunoResponsavel(getDataTable().getFirst(), getDataTable().getRows(), getSearch()));
		} catch (FacadeException e) {
			log.error(e);
		}

		return responsaveis;
	}

	public void setResponsaveis(DataModel&lt;AlunoResponsavel&gt; responsaveis) {
		this.responsaveis = responsaveis;
	}

	public void confirmSelectedResponsavel() {
		this.aluno.setResponsavel(responsavelSelected);
	}
}

Desde já agradeço.

Duas dicas:

1 - você tem forms aninhados (1 form externo e um dentro do dialog). Dialog com appendToBody=true não interessante fazer isso, tira o dialog e coloca ele após esse form.
2 - Esse onclick=“return confirm(‘Confirma o responsável para esse aluno?’);” não funciona muito bem. Pesquisa sobre o confirmDialog do primefaces. Aconselho testar inicialmente sem esse confirm, se funcionar fica mais fácil inserir ele depois.

blz, valee pela sugestão!

Vou fazer as alterações!! Estou penando para fazer funcionar isso.

Opa, fiz os testes, e não deu certo ainda.
Estou achando estranho que nem chama o método do botão:

&lt;p:commandButton action="#{alunoBean.confirmSelectedResponsavel}" value="#{bundle.btnSelectResponsavel}" oncomplete="dlgResponsavel.hide();" icon="responsavel"&gt;  
    &lt;f:setPropertyActionListener value="#{row}" target="#{alunoBean.responsavelSelected}" /&gt;
    &lt;p:ajax update=":form:tabView:nomeResponsavel"/&gt;
&lt;/p:commandButton&gt; 

Muda aqui:

 <p:commandButton id="btnDialog" value="#{bundle.btnSearch}" onclick="dlgResponsavel.show();return false;" icon="search"/>  

para:

 <p:commandButton id="btnDialog" type="button" value="#{bundle.btnSearch}" onclick="dlgResponsavel.show();" icon="search"/>  

O type=button faz com que não seja realizada requisição.

A minha idéia inicial era você remover o dialog de dentro do tabView e colocar mais ou menos assim:

<ui:composition template="/pages/templates/template.xhtml"  
    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.org/ui">  
  
    <ui:define name="content">  
        <p:panel header="#{bundle.header_cadastro_aluno}">  
            <h:form id="form">  
                <p:panelGrid columns="2">  
                    <ui:include src="form.xhtml" />  
                </p:panelGrid>  
                <br/>  
                <p:panelGrid columns="2">  
                    <p:commandButton id="btnSalvar" action="#{alunoBean.save}" value="#{bundle.btnSalvar}" ajax="false" icon="save"/>   
                    <p:commandButton id="btnVoltar" action="#{alunoBean.list}" value="#{bundle.btnCancelar}" ajax="false" immediate="true" icon="cancel"/>  
                </p:panelGrid>   
            </h:form>  
            <!-- o dialog vem aqui  -->
              <p:dialog widgetVar="dlgResponsavel" header="#{bundle.selecao_responsavel}" appendToBody="true" modal="true" height="400" width="500">    
                 <h:form id="frmListaResponsavel">  
                        <!-- aqui o seu conteúdo -->
                 </h:form>    
            </p:dialog>  
        </p:panel>  
    </ui:define>  
  
</ui:composition> 

Fiz conforme mencionado, e nada ainda.
Simplesmente fecha a tela e nem chama o managedbean.

:?:

Alguém tem algum dica, sugestão, exemplo!!

Tentei tudo dentro das minhas limitações e nada… Só quero fazer um popup de consulta, e atualizar a tela que o chamou com os valores selecionado neste popup.

Desde já agradeço.