Estou com um problema e não faço ideia porque acontece…
Tenho um cadastro de clientes. Nesse cadastro de clientes utilizo o MB ClienteController.
Nesse mesmo cadastro, utilizo outro MB para listar os países, outro MB para listar os estados e municípios, ambos num combobox.
Também tenho outro MB para listar os tipos de documentos em um combobox.
Resumindo: estou utilizando no cadastro de clientes mais 3 managed beans.
Se eu cadastrar algum cliente sem selecionar país, estado, município e tipo de documento (não mecher nos outros MB), o método de inserção executa normalmente.
Porém se eu utilizar os outros managed benas, o método de inserção do MB ClienteController não executa de jeito nenhum. Nem chega a entrar no método…
Veja como está minha tela de cadastro:
<p:dialog header="Cliente" widgetVar="dialogCadCliente" resizable="false" modal="false" showEffect="slide" width="680" >
<h:form id="formCadCliente">
<h:panelGrid id="panelGridCadCliente" columns="4" style="margin-bottom:10px">
<h:outputLabel for="codigo" value="Código:" />
<h:inputText id="codigo" value="#{clienteController.cliente.codigo}" disabled="true"/>
<h:outputLabel for="codigos" value="" />
<h:outputLabel for="codigos" value="" />
<h:outputLabel for="nome" value="Nome:" />
<h:inputText id="nome" value="#{clienteController.cliente.nome}"/>
<h:outputLabel for="dataNascimento" value="Nascimento:" />
<p:calendar value="#{clienteController.cliente.dataNascimento}" id="dataNascimento" showOn="button" width="20" />
<h:outputLabel for="cpf" value="CPF:" />
<p:inputMask id="cpf" mask="[CPF removido]" value="#{clienteController.cliente.cpf}" />
<h:outputLabel for="estadoCivil" value="Estado Civil:"/>
<p:selectOneMenu id="estadoCivil" value="#{clienteController.cliente.estadoCivil}">
<f:selectItem itemLabel="Selecione..." itemValue="" />
<f:selectItem itemLabel="Solteiro(a)" itemValue="Solteiro(a)" />
<f:selectItem itemLabel="Casado(a)" itemValue="Casado(a)" />
<f:selectItem itemLabel="Viúvo(a)" itemValue="Viúvo(a)" />
<f:selectItem itemLabel="Divorciado(a)" itemValue="Divorciado(a)" />
</p:selectOneMenu>
<h:outputLabel for="tipoLogradouro" value="Tipo Logradouro:"/>
<p:selectOneMenu id="tipoLogradouro" value="#{clienteController.cliente.tipoLogradouro}">
<f:selectItem itemLabel="Selecione..." itemValue="" />
<f:selectItem itemLabel="Aeroporto" itemValue="Aer" />
<f:selectItem itemLabel="Alameda" itemValue="Al" />
<f:selectItem itemLabel="Apartamento" itemValue="Ap" />
<f:selectItem itemLabel="Avenida" itemValue="Av" />
<f:selectItem itemLabel="Beco" itemValue="Bc" />
<f:selectItem itemLabel="Bloco" itemValue="Bl" />
<f:selectItem itemLabel="Caminho" itemValue="Cam" />
<f:selectItem itemLabel="Escadinha" itemValue="Escd" />
<f:selectItem itemLabel="Estação" itemValue="Est" />
<f:selectItem itemLabel="Estrada" itemValue="Etr" />
<f:selectItem itemLabel="Fazenda" itemValue="Faz" />
<f:selectItem itemLabel="Fortaleza" itemValue="Fort" />
<f:selectItem itemLabel="Galeria" itemValue="Gl" />
<f:selectItem itemLabel="Ladeira" itemValue="Ld" />
<f:selectItem itemLabel="Largo" itemValue="Lgo" />
<f:selectItem itemLabel="Praça" itemValue="Pça" />
<f:selectItem itemLabel="Parque" itemValue="Prq" />
<f:selectItem itemLabel="Praia" itemValue="Pr" />
<f:selectItem itemLabel="Quadra" itemValue="Qd" />
<f:selectItem itemLabel="Quilômetro" itemValue="Km" />
<f:selectItem itemLabel="Quinta" itemValue="Qta" />
<f:selectItem itemLabel="Rodovia" itemValue="Rod" />
<f:selectItem itemLabel="Rua" itemValue="R" />
<f:selectItem itemLabel="Super Quadra" itemValue="Sqd" />
<f:selectItem itemLabel="Travessa" itemValue="Trv" />
<f:selectItem itemLabel="Viaduto" itemValue="Vd" />
<f:selectItem itemLabel="Vila" itemValue="Vl" />
</p:selectOneMenu>
<h:outputLabel for="logradouro" value="Logradouro:" />
<h:inputText id="logradouro" value="#{clienteController.cliente.logradouro}"/>
<h:outputLabel for="numero" value="Número:" />
<h:inputText id="numero" value="#{clienteController.cliente.numero}"/>
<h:outputLabel for="complemento" value="Complemento:" />
<h:inputText id="complemento" value="#{clienteController.cliente.complemento}"/>
<h:outputLabel for="bairro" value="Bairro:" />
<h:inputText id="bairro" value="#{clienteController.cliente.bairro}"/>
<h:outputLabel for="cep" value="CEP:" />
<h:inputText id="cep" value="#{clienteController.cliente.cep}"/>
<h:outputLabel for="pais" value="País:" />
<p:selectOneMenu id="pais" value="#{paisController.pais}" >
<f:selectItem itemLabel="Selecione..." itemValue="" />
<f:selectItems value="#{paisController.paises}" var="p" itemLabel="#{p.nome}" itemValue="#{p}"/>
<p:ajax event="change" listener="#{paisController.actionCarregaUfs}" update="uf" />
</p:selectOneMenu>
<h:outputLabel for="uf" value="UF:" />
<p:selectOneMenu id ="uf" value ="#{unidadeFederacaoController.uf}" >
<f:selectItem itemLabel="Selecione..." itemValue="" />
<f:selectItems value="#{paisController.ufs}" var="uf" itemLabel="#{uf.nome}" itemValue="#{uf}" />
<p:ajax event="change" listener="#{unidadeFederacaoController.actionCarregaMunicipios}" update="municipio" />
</p:selectOneMenu>
<h:outputLabel for="municipio" value="Município:" />
<p:selectOneMenu id="municipio" value="#{clienteController.cliente.municipio}" >
<f:selectItem itemLabel="Selecione..." itemValue="" />
<f:selectItems value="#{unidadeFederacaoController.municipios}" var="municipio" itemLabel="#{municipio.nome}" itemValue="#{municipio}" />
</p:selectOneMenu>
<h:outputLabel for="pai" value="Nome do Pai:" />
<h:inputText id="pai" value="#{clienteController.cliente.pai}"/>
<h:outputLabel for="mae" value="Nome da Mãe:" />
<h:inputText id="mae" value="#{clienteController.cliente.mae}"/>
<h:outputLabel for="telefone" value="Telefone:" />
<p:inputMask id="telefone" mask="([telefone removido]" value="#{clienteController.cliente.telefone}" />
<h:outputLabel for="email" value="E-mail:" />
<h:inputText id="email" value="#{clienteController.cliente.email}"/>
<h:outputLabel for="profissao" value="Profissão:" />
<h:inputText id="profissao" value="#{clienteController.cliente.profissao}"/>
<h:outputLabel for="tipoDocumento" value="Tipo do Documento:" />
<p:selectOneMenu id="tipoDocumento" value="#{clienteController.cliente.tipoDocumento}" >
<f:selectItem itemLabel="Selecione..." itemValue="" />
<f:selectItems value="#{tipoDocumentoController.tiposDocumentos}" var="tipoDocumento" itemLabel="#{tipoDocumento.descricao}" itemValue="#{tipoDocumento}" />
</p:selectOneMenu>
<h:outputLabel for="numDoc" value="Número Documento:" />
<h:inputText id="numDoc" value="#{clienteController.cliente.numeroDocumento}"/>
<h:outputLabel for="dataExpedicao" value="Data de Expedição:" />
<p:calendar value="#{clienteController.cliente.dataExpedicao}" id="dataExpedicao" showOn="button" width="20" />
<h:outputLabel for="orgExp" value="Órgão Expedidor:" />
<h:inputText id="orgExp" value="#{clienteController.cliente.orgaoExpedidor}"/>
<p:commandButton icon="ui-icon-disk" id="commandButtonInserir" update=":formConCliente:tabela" oncomplete="dialogCadCliente.hide();" actionListener="#{clienteController.adicionarCliente}" value="Inserir" rendered="#{clienteController.isInsercao}"/>
<p:commandButton icon="ui-icon-disk" id="commandButtonAlterar" update=":formConCliente:tabela" oncomplete="dialogCadCliente.hide();" actionListener="#{clienteController.alterarCliente}" value="Alterar" rendered="#{clienteController.isAlteracao}"/>
</h:panelGrid>
</h:form>
</p:dialog>
Percebam que estou utilizando outros MB’s junto com o MB principal que seria o ClienteController.
Se eu tenho um MB que depende de outros MB, isso deve ser feito de outra forma? Como posso solucionar esse problema?