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/>
<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>
</p:panel>
</ui:define>
</ui:composition>
form.xhtml
<?xml version='1.0' encoding='ISO-8859-1' ?>
<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">
<p:tabView id="tabView">
<p:tab id="tab4" title="#{bundle.responsavel}">
<p:panelGrid columns="2">
<p:outputLabel for="btnDialog" value="#{bundle.search}" />
<p:commandButton id="btnDialog" value="#{bundle.btnSearch}" onclick="dlgResponsavel.show();return false;" icon="search"/>
<p:outputLabel for="nomeResponsavel" value="#{bundle.nome}"/>
<p:inputText id="nomeResponsavel" value="#{alunoBean.aluno.responsavel.nome}" requiredMessage="#{bundle.nomeResponsavel_required}" required="#{alunoBean.responsavelRequired}" style="width:300px;" >
<p:ajax update="cpfResponsavel"></p:ajax>
<p:ajax update="rgResponsavel"></p:ajax>
</p:inputText>
<p:outputLabel for="cpfResponsavel" value="#{bundle.cpf}" />
<p:inputMask id="cpfResponsavel" value="#{alunoBean.aluno.responsavel.cpf}" mask="999.999.999-99" requiredMessage="#{bundle.cpfResponsavel_required}" required="#{alunoBean.responsavelRequired}" style="width:120px;" >
<f:validator validatorId="validadorCpf"/>
</p:inputMask>
<p:outputLabel for="rgResponsavel" value="#{bundle.rg}" />
<p:inputText id="rgResponsavel" value="#{alunoBean.aluno.responsavel.rg}" requiredMessage="#{bundle.rgResponsavel_required}" required="#{alunoBean.responsavelRequired}" maxlength="15" style="width:100px;" />
</p:panelGrid>
<p:dialog widgetVar="dlgResponsavel" header="#{bundle.selecao_responsavel}" appendToBody="true" modal="true" height="400" width="500">
<p:panel header="#{bundle.header_search_responsavel}" >
<h:form id="frmSearchResponsavel">
<p:outputLabel for="cpfResponsavel" value="#{bundle.cpf}" /><p:spacer/>
<p:inputMask id="cpfResponsavel" value="#{alunoBean.searchResponsavel}" mask="999.999.999-99" style="width:120px;" ><p:spacer/>
</p:inputMask>
<p:commandButton id="btnSearchResponsavel" actionListener="#{alunoBean.search}" value="#{bundle.btnSearch}" icon="search"/>
</h:form>
</p:panel>
<br/>
<h:form id="frmListaResponsavel">
<p:dataTable
id="lstListaResponsavel"
var="row"
value="#{alunoBean.responsaveis}"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
paginatorPosition="bottom"
rows="5"
rowsPerPageTemplate="5,10" >
<p:column>
<f:facet name="header">
<h:outputText value="#{bundle.nome}" />
</f:facet>
<h:outputText value="#{row.nome}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{bundle.cpf}" />
</f:facet>
<h:outputText value="#{row.cpf}" />
</p:column>
<p:column style="width:32px">
<p:commandButton action="#{alunoBean.confirmSelectedResponsavel}" value="#{bundle.btnSelectResponsavel}" onclick="return confirm('Confirma o responsável para esse aluno?');" oncomplete="dlgResponsavel.hide();" icon="responsavel">
<f:setPropertyActionListener value="#{row}" target="#{alunoBean.responsavelSelected}" />
<p:ajax update=":form:tabView:nomeResponsavel" /> <!--FIZ UM TESTE PARA ATUALIZAR O NOME, MAS NADA. -->
</p:commandButton>
</p:column>
</p:dataTable>
</h:form>
</p:dialog>
</p:tab>
</p:tabView>
</ui:composition>
ManagedBean
public class AlunoBean {
private AlunoResponsavel responsavelSelected;
private DataModel<Aluno> alunos;
private DataModel<AlunoResponsavel> responsaveis;
public AlunoResponsavel getResponsavelSelected() {
return responsavelSelected;
}
public void setResponsavelSelected(AlunoResponsavel responsavelSelected) {
this.responsavelSelected = responsavelSelected;
}
public DataModel<Aluno> getAlunos() {
try {
setAlunos(null);
alunos = new ListDataModel<Aluno>(facade.getDataModelAluno(getDataTable().getFirst(), getDataTable().getRows(), getSearch()));
} catch (FacadeException e) {
log.error(e);
}
return alunos;
}
public void setAlunos(DataModel<Aluno> alunos) {
this.alunos = alunos;
}
public DataModel<AlunoResponsavel> getResponsaveis() {
try {
setResponsaveis(null);
responsaveis = new ListDataModel<AlunoResponsavel>(facade.getDataModelAlunoResponsavel(getDataTable().getFirst(), getDataTable().getRows(), getSearch()));
} catch (FacadeException e) {
log.error(e);
}
return responsaveis;
}
public void setResponsaveis(DataModel<AlunoResponsavel> responsaveis) {
this.responsaveis = responsaveis;
}
public void confirmSelectedResponsavel() {
this.aluno.setResponsavel(responsavelSelected);
}
}
Desde já agradeço.