Instanceof para editar cliente. PF ou PJ

Java

22/08/2014

Bom dia Galera,

Tenho classe pessoaFisica e jurídica que extends de pessoa. Para editar o cliente selecionado estou usando instanceof

public String editarPessoa(Pessoa p) {
if (p instanceof PessoaFisica) {
pessoaFisica = (PessoaFisica) p;
return "editarPessoaFisica";
} else {
pessoaJuridica = (PessoaJuridica) p;
return "editarPessoaJuridica";

}

}


Esse método está na classe pessoa , onde existe outro método que lista. Ao clicar para editar o cliente chamando métodos acima, os dados atuais não é recuperado na pagina de edição , campo em em branco. Está funcionando para identificar o tipo do cliente e carregar a pagina adequada mas não recupera os dados.

Obrigado desde já.

Abaixo parte do código onde o cliente é listado, e chamando método.

<p:dataTable id="processo" value="#{pessoaBean.listarPessoa()}" var="pessoa" widgetVar="PESSOA" paginator="true" rows="20"
paginatorTemplate=" "
rowsPerPageTemplate="30,50,100" style=" font-size: small" >



<p:column>
<f:facet name="header">
<h:outputText value="Editar" />
</f:facet>
<p:commandLink value="Editar" action="#{pessoaBean.editarPessoa(pessoa)}" />


</p:column>


<p:column>
<f:facet name="header">
<h:outputText value="Excluir" />
</f:facet>


<p:commandLink value="Excluir" action="#{pessoaBean.removePessoa(pessoa)}" update="@all"
onclick="if (!confirm('Deseja excluir o cliente: #{pessoa.nome}?'))
return false;" />
</p:column>

Sidnei Ferreira

Sidnei Ferreira

Curtidas 0

Respostas

Ronaldo Lanhellas

Ronaldo Lanhellas

22/08/2014

Mostre como está fazendo nas páginas de edições ( editarPessoaFisica e editarPessoaJuridica)
GOSTEI 0
Sidnei Ferreira

Sidnei Ferreira

22/08/2014

Ronaldo, estava com erro na pagina de editarCliente. resolvi uma parte. Está carregando as informações na pagina como queria, mas está dando erro ao salvar. vou postar o codigo da pagina de edição.

               <h:panelGrid columns="2"   >
                        
                        

                        <h:outputLabel for="id" value="ID" />        
                        <h:outputText value="#{pessoaBean.pessoaFisica.id}" />

                        <h:outputLabel for="nome" value="Nome:*" style="font-size: large" />
                        <p:inputText id="nome" label="nome"  value="#{pessoaBean.pessoaFisica.nome}"
                                     size="50" autocomplete="true" required="true" requiredMessage="Campo Nome  não preenchido!"  >
                        </p:inputText>

                        <h:outputLabel for="rg" value="RG:*"  style="font-size: large"/>
                        <p:inputMask id="rg" label="rg" mask="99.999.999-9"
                                     value="#{pessoaBean.pessoaFisica.rg}" size="12"
                                     required="true" requiredMessage="Campo RG não preenchido!"  >
                        </p:inputMask>

                        <h:outputLabel for="cpf" value="CPF*" style="font-size: large" />
                        <p:inputMask id="cpf" label="cpf" mask="999.999.999-99"
                                     value="#{pessoaBean.pessoaFisica.cpf}" size="14" required="true"
                                     requiredMessage="Campo CPF não preenchido!"   >
                        </p:inputMask>

                        <h:outputLabel for="datanascimento" value="Data de Nasc.:*"  style="font-size: large"/>
                        <p:inputMask id="dataAbertura" label="Data de Abertura"
                                     mask="99/99/9999" value="#{pessoaBean.pessoaFisica.idade}" size="10"
                                     required="true" requiredMessage="Campo Data Nascimento não preenchido!"  >
                        </p:inputMask>

                        <h:outputLabel for="estadoCivil" value="Estado Civil:*" style="font-size: large" />
                        <p:inputText id="estadoCivil" label="Estado Civil"  value="#{pessoaBean.pessoaFisica.estadoCivil}"
                                     size="20" required="true" requiredMessage="Campo Estado Civil não preenchido!"  >
                        </p:inputText>

                        <h:outputLabel for="profisao" value="Profissão:*" style="font-size: large" />
                        <p:inputText id="profisao" label="Prosisao" value="#{pessoaBean.pessoaFisica.profissao}" 
                                     required="true" requiredMessage="Campo Profissão não preenchido!"  >
                        </p:inputText>

                        <h:outputLabel for="email" value="E-mail:"  style="font-size: large"/>
                        <p:inputText id="email" label="E-mail"  value="#{pessoaBean.pessoaFisica.email}" size="50"
                                     required ="true"  requiredMessage="Digite seu Email"  
                                     validatorMessage="Email inválido!" >  
                            <f:validateRegex pattern="[a-zA-Z0-9\-\_\.]+@[a-zA-Z0-9\-\_\.]+"/></p:inputText>


                        <h:outputLabel for="nomepai" value="Nome Pai:*" style="font-size: large" />
                        <p:inputText id="nomedopai" label="nomepai"  value="#{pessoaBean.pessoaFisica.nomePai}" size="50" 
                                     required="true" requiredMessage="Campo Nome do Pai não preenchido!"  >
                        </p:inputText>

                        <h:outputLabel for="nomemae" value="Nome da Mãe:*" style="font-size: large" />
                        <p:inputText id="mae" label="nomepai"  value="#{pessoaBean.pessoaFisica.nomeMae}" size="50" 
                                     required="true" requiredMessage="Campo Nome da Mãe não preenchido!"  >
                        </p:inputText>

                        <h:outputLabel for="cep" value="CEP:"  style="font-size: large"/>
                        <p:inputMask id="cep" mask="99999-999" value="#{pessoaBean.pessoaFisica.cep}" />

                            
                        <h:outputLabel value=""  style="font-size: large"/>
                        <p:commandButton value="Buscar">
                            <f:ajax listener="#{pessoaJuridicaBean.encontraCEP}" execute="@form" render="@form"
                                    event="click" />
                        </p:commandButton>

                        <h:outputLabel value="Rua: "  style="font-size: large" />
                        <p:inputText size="40" value="#{pessoaBean.pessoaFisica.logradouro}"  />

                        <h:outputLabel value="N°: "  style="font-size: large"/>
                        <p:inputText size="5" value="#{pessoaBean.pessoaFisica.numero}"  />

                        <h:outputLabel value="UF: "  style="font-size: large"/>
                        <p:inputText size="5" value="#{pessoaBean.pessoaFisica.estado}"  />


                        <h:outputLabel value="Cidade: "  style="font-size: large"/>
                        <p:inputText size="50" value="#{pessoaBean.pessoaFisica.cidade}" />

                        <h:outputLabel value="Bairro: "  style="font-size: large"/>
                        <p:inputText size="25" value="#{pessoaBean.pessoaFisica.bairro}" />



                        <h:outputLabel for="telefone" value="Telefone Res.:"  style="font-size: large"/>
                        <p:inputMask id="telefone" label="Telefone" mask="(99)-9999-9999"  value="#{pessoaBean.pessoaFisica.telefone1}" >
                        </p:inputMask>

                        <h:outputLabel for="telefone2" value="Telefone Comer.:"  style="font-size: large"/>
                        <p:inputMask id="telefone2" label="Telefone2" mask="(99)-9999-9999" value="#{pessoaBean.pessoaFisica.telefone2}" >
                        </p:inputMask>

                        <h:outputLabel for="celular" value="Celular:"  style="font-size: large"/>
                        <p:inputMask id="celular" label="Celular" mask="(99)-99999-9999"  value="#{pessoaBean.pessoaFisica.celular}" >
                        </p:inputMask>


                    </h:panelGrid>



                    <p:commandButton value="Salvar" action="#{pessoaBean.altualizarPessoa}" ajax="false"  />
                    <p:commandButton value="Voltar" action="listarCliente" ajax="false"  immediate="true" />


                </p:panel>


erro
java.lang.IllegalArgumentException: attempt to create saveOrUpdate event with null entity


No ben pessoa. tem o método update, o DAO está assim:

public void atualizar(Pessoa ps) {
        session = HibernateUtil.getSessionFactory().openSession();

        try {
            session = HibernateUtil.getSessionFactory().openSession();
            session.beginTransaction();
            session.saveOrUpdate(ps);
            session.getTransaction().commit();
        } finally {
            session.close();

        }
    }


método
 public String altualizarPessoa() {
        pessoaDAO.atualizar(pessoa);
        return "listarCliente";
    }



Att.,
GOSTEI 0
POSTAR