Cadastro de endereço

Java

04/03/2015

Olá pessoal!

Na página de cadastro de cliente da minha aplicação web, existe um botão, chamado "Novo Endereço", que faz uma chamada à página de cadastro de endereço que permite nserir um novo endereço para o cliente exibido na página de cadastro de cliente.

Acontece que, ao ser chamada a página de cadastro de endereço, o objeto cliente não está sendo pego. Como faço para carregar o objeto cliente para a página de cadastro de endereço para que ao gravar este novo endereço o código do cliente não esteja nulo? Não estou conseguindo fazer isso. Segue abaixo código das duas classes (Cliente, Endereco):


@Entity
public class Cliente implements Serializable {
    
    private static final long serialVersionUID = 1L;

    private Integer codigo;
    private String nome;
    private String cpf;
    private String cnpj;
    private String tipodoc;
    private String numdoc;
    private String orgaodoc;
    private String numcnh;
    private String categoriacnh;
    private String observacao;
    private Date datacadastro = new Date();
    private Date nascimento;
    private Date datadoc;
    private Date validadecnh;
    private Date primeiracnh;
    private boolean ativo;
    private Pessoa pessoa;
    private Sexo sexo;
    private EstadoCivil estadocivil;
    private List<Endereco> endereco;
    private List<Telefone> telefone;
    private List<Email> email;
    private Corretor corretor;
    private Profissao profissao;

    @Id
    @GeneratedValue    
    public Integer getCodigo() {
        return codigo;
    }

    public void setCodigo(Integer codigo) {
        this.codigo = codigo;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public String getCnpj() {
        return cnpj;
    }

    public void setCnpj(String cnpj) {
        this.cnpj = cnpj;
    }

    public String getTipodoc() {
        return tipodoc;
    }

    public void setTipodoc(String tipodoc) {
        this.tipodoc = tipodoc;
    }

    public String getNumdoc() {
        return numdoc;
    }

    public void setNumdoc(String numdoc) {
        this.numdoc = numdoc;
    }

    public String getOrgaodoc() {
        return orgaodoc;
    }

    public void setOrgaodoc(String orgaodoc) {
        this.orgaodoc = orgaodoc;
    }

    public String getNumcnh() {
        return numcnh;
    }

    public void setNumcnh(String numcnh) {
        this.numcnh = numcnh;
    }

    public String getCategoriacnh() {
        return categoriacnh;
    }

    public void setCategoriacnh(String categoriacnh) {
        this.categoriacnh = categoriacnh;
    }

    public String getObservacao() {
        return observacao;
    }

    public void setObservacao(String observacao) {
        this.observacao = observacao;
    }

    @Temporal(TemporalType.DATE)
    public Date getDatacadastro() {
        return datacadastro;
    }

    public void setDatacadastro(Date datacadastro) {
        this.datacadastro = datacadastro;
    }

    @Temporal(TemporalType.DATE)
    public Date getNascimento() {
        return nascimento;
    }

    public void setNascimento(Date nascimento) {
        this.nascimento = nascimento;
    }

    @Temporal(TemporalType.DATE)
    public Date getDatadoc() {
        return datadoc;
    }

    public void setDatadoc(Date datadoc) {
        this.datadoc = datadoc;
    }

    @Temporal(TemporalType.DATE)
    public Date getValidadecnh() {
        return validadecnh;
    }

    public void setValidadecnh(Date validadecnh) {
        this.validadecnh = validadecnh;
    }

    @Temporal(TemporalType.DATE)
    public Date getPrimeiracnh() {
        return primeiracnh;
    }

    public void setPrimeiracnh(Date primeiracnh) {
        this.primeiracnh = primeiracnh;
    }

    public boolean isAtivo() {
        return ativo;
    }

    public void setAtivo(boolean ativo) {
        this.ativo = ativo;
    }

    @Enumerated(EnumType.STRING)
    public Pessoa getPessoa() {
        return pessoa;
    }

    public void setPessoa(Pessoa pessoa) {
        this.pessoa = pessoa;
    }

    @Enumerated(EnumType.STRING)
    public Sexo getSexo() {
        return sexo;
    }

    public void setSexo(Sexo sexo) {
        this.sexo = sexo;
    }

    @Enumerated(EnumType.STRING)
    public EstadoCivil getEstadocivil() {
        return estadocivil;
    }

    public void setEstadocivil(EstadoCivil estadocivil) {
        this.estadocivil = estadocivil;
    }

    @OneToMany(mappedBy = "cliente")
    public List<Endereco> getEndereco() {
        return endereco;
    }

    public void setEndereco(List<Endereco> endereco) {
        this.endereco = endereco;
    }

    @OneToMany(mappedBy = "cliente")
    public List<Telefone> getTelefone() {
        return telefone;
    }

    public void setTelefone(List<Telefone> telefone) {
        this.telefone = telefone;
    }

    @OneToMany(mappedBy = "cliente")
    public List<Email> getEmail() {
        return email;
    }

    public void setEmail(List<Email> email) {
        this.email = email;
    }

    @ManyToOne
    @JoinColumn(name = "codcorretor")
    public Corretor getCorretor() {
        return corretor;
    }

    public void setCorretor(Corretor corretor) {
        this.corretor = corretor;
    }

    @ManyToOne
    @JoinColumn(name = "codprofissao")
    public Profissao getProfissao() {
        return profissao;
    }

    public void setProfissao(Profissao profissao) {
        this.profissao = profissao;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 71 * hash + Objects.hashCode(this.codigo);
        hash = 71 * hash + Objects.hashCode(this.nome);
        hash = 71 * hash + Objects.hashCode(this.cpf);
        hash = 71 * hash + Objects.hashCode(this.cnpj);
        hash = 71 * hash + Objects.hashCode(this.tipodoc);
        hash = 71 * hash + Objects.hashCode(this.numdoc);
        hash = 71 * hash + Objects.hashCode(this.orgaodoc);
        hash = 71 * hash + Objects.hashCode(this.numcnh);
        hash = 71 * hash + Objects.hashCode(this.categoriacnh);
        hash = 71 * hash + Objects.hashCode(this.observacao);
        hash = 71 * hash + Objects.hashCode(this.datacadastro);
        hash = 71 * hash + Objects.hashCode(this.nascimento);
        hash = 71 * hash + Objects.hashCode(this.datadoc);
        hash = 71 * hash + Objects.hashCode(this.validadecnh);
        hash = 71 * hash + Objects.hashCode(this.primeiracnh);
        hash = 71 * hash + (this.ativo ? 1 : 0);
        hash = 71 * hash + Objects.hashCode(this.pessoa);
        hash = 71 * hash + Objects.hashCode(this.sexo);
        hash = 71 * hash + Objects.hashCode(this.estadocivil);
        hash = 71 * hash + Objects.hashCode(this.endereco);
        hash = 71 * hash + Objects.hashCode(this.telefone);
        hash = 71 * hash + Objects.hashCode(this.email);
        hash = 71 * hash + Objects.hashCode(this.corretor);
        hash = 71 * hash + Objects.hashCode(this.profissao);
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Cliente other = (Cliente) obj;
        if (!Objects.equals(this.codigo, other.codigo)) {
            return false;
        }
        if (!Objects.equals(this.nome, other.nome)) {
            return false;
        }
        if (!Objects.equals(this.cpf, other.cpf)) {
            return false;
        }
        if (!Objects.equals(this.cnpj, other.cnpj)) {
            return false;
        }
        if (!Objects.equals(this.tipodoc, other.tipodoc)) {
            return false;
        }
        if (!Objects.equals(this.numdoc, other.numdoc)) {
            return false;
        }
        if (!Objects.equals(this.orgaodoc, other.orgaodoc)) {
            return false;
        }
        if (!Objects.equals(this.numcnh, other.numcnh)) {
            return false;
        }
        if (!Objects.equals(this.categoriacnh, other.categoriacnh)) {
            return false;
        }
        if (!Objects.equals(this.observacao, other.observacao)) {
            return false;
        }
        if (!Objects.equals(this.datacadastro, other.datacadastro)) {
            return false;
        }
        if (!Objects.equals(this.nascimento, other.nascimento)) {
            return false;
        }
        if (!Objects.equals(this.datadoc, other.datadoc)) {
            return false;
        }
        if (!Objects.equals(this.validadecnh, other.validadecnh)) {
            return false;
        }
        if (!Objects.equals(this.primeiracnh, other.primeiracnh)) {
            return false;
        }
        if (this.ativo != other.ativo) {
            return false;
        }
        if (this.pessoa != other.pessoa) {
            return false;
        }
        if (this.sexo != other.sexo) {
            return false;
        }
        if (this.estadocivil != other.estadocivil) {
            return false;
        }
        if (!Objects.equals(this.endereco, other.endereco)) {
            return false;
        }
        if (!Objects.equals(this.telefone, other.telefone)) {
            return false;
        }
        if (!Objects.equals(this.email, other.email)) {
            return false;
        }
        if (!Objects.equals(this.corretor, other.corretor)) {
            return false;
        }
        if (!Objects.equals(this.profissao, other.profissao)) {
            return false;
        }
        return true;
    }   
}




@Entity
public class Endereco implements Serializable {

    private static final long serialVersionUID = 1L;

    private Integer codendereco;
    private String logradouro;
    private String numero;
    private String complemento;
    private String bairro;
    private String cidade;
    private String cep;
    private TipoEndereco tipoendereco;
    private UFEndereco uf;
    private Cliente cliente;

    @Id
    @GeneratedValue
    public Integer getCodendereco() {
        return codendereco;
    }

    public void setCodendereco(Integer codendereco) {
        this.codendereco = codendereco;
    }

    public String getLogradouro() {
        return logradouro;
    }

    public void setLogradouro(String logradouro) {
        this.logradouro = logradouro;
    }

    public String getNumero() {
        return numero;
    }

    public void setNumero(String numero) {
        this.numero = numero;
    }

    public String getComplemento() {
        return complemento;
    }

    public void setComplemento(String complemento) {
        this.complemento = complemento;
    }

    public String getBairro() {
        return bairro;
    }

    public void setBairro(String bairro) {
        this.bairro = bairro;
    }

    public String getCidade() {
        return cidade;
    }

    public void setCidade(String cidade) {
        this.cidade = cidade;
    }

    public String getCep() {
        return cep;
    }

    public void setCep(String cep) {
        this.cep = cep;
    }

    @Enumerated(EnumType.STRING)
    public TipoEndereco getTipoendereco() {
        return tipoendereco;
    }

    public void setTipoendereco(TipoEndereco tipoendereco) {
        this.tipoendereco = tipoendereco;
    }

    @Enumerated(EnumType.STRING)
    public UFEndereco getUf() {
        return uf;
    }

    public void setUf(UFEndereco uf) {
        this.uf = uf;
    }

    @ManyToOne
    @JoinColumn(name = "codigo", nullable = false)    
    public Cliente getCliente() {
        return cliente;
    }

    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }

    @Override
    public int hashCode() {
        int hash = 3;
        hash = 59 * hash + Objects.hashCode(this.codendereco);
        hash = 59 * hash + Objects.hashCode(this.logradouro);
        hash = 59 * hash + Objects.hashCode(this.numero);
        hash = 59 * hash + Objects.hashCode(this.complemento);
        hash = 59 * hash + Objects.hashCode(this.bairro);
        hash = 59 * hash + Objects.hashCode(this.cidade);
        hash = 59 * hash + Objects.hashCode(this.cep);
        hash = 59 * hash + Objects.hashCode(this.tipoendereco);
        hash = 59 * hash + Objects.hashCode(this.uf);
        hash = 59 * hash + Objects.hashCode(this.cliente);
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Endereco other = (Endereco) obj;
        if (!Objects.equals(this.codendereco, other.codendereco)) {
            return false;
        }
        if (!Objects.equals(this.logradouro, other.logradouro)) {
            return false;
        }
        if (!Objects.equals(this.numero, other.numero)) {
            return false;
        }
        if (!Objects.equals(this.complemento, other.complemento)) {
            return false;
        }
        if (!Objects.equals(this.bairro, other.bairro)) {
            return false;
        }
        if (!Objects.equals(this.cidade, other.cidade)) {
            return false;
        }
        if (!Objects.equals(this.cep, other.cep)) {
            return false;
        }
        if (this.tipoendereco != other.tipoendereco) {
            return false;
        }
        if (this.uf != other.uf) {
            return false;
        }
        if (!Objects.equals(this.cliente, other.cliente)) {
            return false;
        }
        return true;
    }   
}


@ManagedBean(name="enderecoBean")
@RequestScoped
public class EnderecoBean {
    
    private Endereco endereco = new Endereco();
    private List<Endereco> lista;    
    private List<TipoEndereco> tiposEndereco;
    private List<UFEndereco> ufs;
    private List<Cliente> listaClientes;
    
    public String novo() {
        this.endereco = new Endereco();
        return "/restrito/cadastrarendereco";        
    }
    
    public String editar() {
        return "/restrito/cadastrarendereco";
    }
    
    public void salvar() {

        FacesContext facesContext = FacesContext.getCurrentInstance();         
        
        EnderecoRN enderecoRN = new EnderecoRN();
        enderecoRN.salvar(this.endereco);
        
        FacesMessage facesMessage = new FacesMessage("Endereço cadastrado com sucesso!");
        facesContext.addMessage(null, facesMessage);
        
    }
    
    public String excluir() throws RNException {
        
        EnderecoRN enderecoRN = new EnderecoRN();
        enderecoRN.excluir(this.endereco);
        
        this.lista = null;
        return null;
    }    

    public Endereco getEndereco() {
        return endereco;
    }

    public void setEndereco(Endereco endereco) {
        this.endereco = endereco;
    }
    
    public List<Endereco> getLista() {
        if (this.lista == null) {
            EnderecoRN enderecoRN = new EnderecoRN();
            this.lista = enderecoRN.listar();
        }
        return lista;
    }    

    public List<TipoEndereco> getTiposEndereco() {
        return tiposEndereco = Arrays.asList(TipoEndereco.values());
    }

    public List<UFEndereco> getUfs() {
        return ufs = Arrays.asList(UFEndereco.values());
    }

    public List<Cliente> getListaClientes() {
        return listaClientes;
    }
    
}



<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.org/ui">
    <h:head>
        <title>Cadastro de Endereço</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
        <h:outputStylesheet library="css" name="sistema.css" />
    </h:head>
    <h:body>  
	
        <header>
            <div style="float: right; margin-right: 110px">
		<h:form style="display: inline-block">                                   
                    <p:menubar styleClass="menu-sistema">
			<p:submenu label="Cadastros">
                            <p:menuitem value="Clientes" url="/restrito/cadastrarcliente.jsf"/>
                            <p:menuitem value="Seguros" url="/restrito/cadastrarseguro.jsf"/>
                        </p:submenu>
			<p:submenu label="Consultas">
                            <p:menuitem value="Clientes" url="/restrito/consultarclientes.jsf"/>
                            <p:menuitem value="Seguros" url="/restrito/consultarseguros.jsf"/>
                        </p:submenu>
			<p:submenu label="Relatórios">
                            <p:menuitem value="Clientes" url="/restrito/relclientes.jsf"/>
                            <p:menuitem value="Seguros" url="/restrito/relseguros.jsf"/>
                        </p:submenu>
                            <p:menuitem value="Sair" icon="ui-icon-close" onclick="document.location='#{request.contextPath}/j_spring_security_logout'" />
                    </p:menubar>
		</h:form>
            </div>
            <div style="clear: both"></div>
	</header>        
        
    <h:form acceptcharset="ISO-8859-1">
        
        <h1>Novo endereço</h1>
        
        <p:toolbar style="margin-top: 20px">
            <p:toolbarGroup>
                <p:button value="Novo" outcome="/restrito/cadastrarendereco" />
                <p:commandButton action="#{enderecoBean.salvar()}" value="Salvar" ajax="false" update="messages"/>
	    </p:toolbarGroup>
            <p:toolbarGroup align="right">
                <p:button value="Voltar" outcome="/restrito/cadastrarcliente"/>
	    </p:toolbarGroup>            
	</p:toolbar> 
        
        <br/><br/>

        <p:panel header="Dados do Endereço">
            
            <p:messages id="messages" autoUpdate="true" closable="true" />
            
            <h:inputHidden id="codigo" value="#{enderecoBean.endereco.codendereco}" />
            
            <h:panelGrid columns="4" style="width: 100%; margin-top: 20px" columnClasses="rotulo, campo, rotulo, campo" cellpadding="3">
                
                <h:outputText value="Tipo de Endereço:" />
                <p:selectOneMenu id="tipoEndereco" value="#{enderecoBean.endereco.tipoendereco}" label="Tipo de Endereço" required="true" requiredMessage="Informe o Tipo de Endereço." immediate="true">
                    <f:selectItem itemLabel="Selecione" />
                    <f:selectItems value="#{enderecoBean.tiposEndereco}" var="tipoEndereco" itemLabel="#{tipoEndereco.descricao}" itemValue="#"/>
                </p:selectOneMenu>                
                <h:outputText value="Logradouro:" />
                <p:inputText id="nome" value="#{enderecoBean.endereco.logradouro}" required="true" label="Logradouro" size="100" requiredMessage="Informe o Logradouro." immediate="true"/>
                
                <h:outputText value="Número:" />
                <p:inputMask mask="9?999999999" value="#{enderecoBean.endereco.numero}" required="true" label="Nº" size="10" maxlength="10" requiredMessage="Informe o Número." immediate="true"/>
 
                <h:outputText value="Complemento:" />
                <p:inputText value="#{enderecoBean.endereco.complemento}" required="true" label="Complemento" size="20" maxlength="20" />
 
                <h:outputText value="Bairro:" />
                <p:inputText value="#{enderecoBean.endereco.bairro}" label="Bairro" required="true" size="50" maxlength="50" requiredMessage="Informe o Bairro." immediate="true"/>
 
                <h:outputText value="Cidade:" />
                <p:inputText value="#{enderecoBean.endereco.cidade}" label="Cidade" required="true" size="50" maxlength="50" requiredMessage="Informe a Cidade." immediate="true"/>
                
                <h:outputText value="CEP:" />
                <p:inputMask id="cep" mask="99999-999" value="#{enderecoBean.endereco.cep}" required="true" size="10" maxlength="10" requiredMessage="Informe o CEP." immediate="true"/>                
                
                <h:outputText value="UF:" />
                <p:selectOneMenu id="uf" value="#{enderecoBean.endereco.uf}" required="true" requiredMessage="Informe o Estado." immediate="true">
                    <f:selectItem itemLabel="Selecione" />
                    <f:selectItems value="#{enderecoBean.ufs}" var="uf" itemLabel="#{uf.descricao}" itemValue="#"/>
                </p:selectOneMenu>                 
            </h:panelGrid>
        </p:panel>              
    </h:form>

</h:body>
</html>

Sgrandini

Sgrandini

Curtidas 0
POSTAR