Erro ao tentar incluir uma empresa

javax.servlet.ServletException: /IncluirEmpresas.jsp(43,0) ‘#{empresaView.empresa.endereco.logradouro}’ Target Unreachable, ‘endereco’ returned null
javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)

Prezados,

estou fazendo um programa utilizando jsf e está ocorrendo o erro acima quando tento incluir uma nova empresa, quando tento atualizar uma empresa já cadastrada, tudo funciona 100%.

segue as classes …

public class Empresa
{
private int idEmpresa;
private String nome;
private String razSocial;
private String CNPJ;
private Endereco endereco;
private String contato;
private String fones;

public Empresa()
{}

public Empresa
   ( int idEmpresa , String nome , String razSocial , String CNPJ , 
     String logradouro , String bairro , int CEP , String cidade , 
     String estado , String contato , String fones )
{       
             
    setIdEmpresa(idEmpresa);
    setNome(nome);
    setRazSocial(razSocial);
    setCNPJ(CNPJ);
    endereco = new Endereco( logradouro , bairro , CEP , cidade , estado );
    setContato(contato);
    setFones(fones);
}

public int getIdEmpresa() 
{  return idEmpresa;  }

public void setIdEmpresa(int idEmpresa) 
{    this.idEmpresa = idEmpresa;    }

public String getNome() 
{        return nome;    }

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

public String getRazSocial() 
{        return razSocial;    }

public void setRazSocial(String razSocial) 
{        this.razSocial = razSocial;    }

public String getCNPJ() 
{        return CNPJ;    }

public void setCNPJ(String CNPJ) 
{        this.CNPJ = CNPJ;    }

public String getContato() 
{        return contato;    }

public void setContato(String contato) 
{        this.contato = contato;    }

public String getFones() 
{        return fones;    }

public void setFones(String fones) 
{        this.fones = fones;    }

public Endereco getEndereco() 
{        return endereco;    }

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

}

public class Endereco
{
private String logradouro;
private String bairro;
private int CEP;
private String cidade;
private String estado;

public Endereco()
{}

public Endereco( String logradouro , String bairro , int CEP , String cidade , String estado )
{
    setLogradouro(logradouro); 
    setBairro(bairro);
    setCEP(CEP);
    setCidade(cidade);
    setEstado(estado);
}

public String getLogradouro() 
{        return logradouro;    }

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

public String getBairro() 
{        return bairro;    }

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

public int getCEP() 
{        return CEP;    }

public void setCEP(int CEP) 
{        this.CEP = CEP;    }

public String getCidade() 
{        return cidade;    }

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

public String getEstado() 
{        return estado;    }

public void setEstado(String estado) 
{        this.estado = estado;    }

}

public class empresasController
{
private Empresa empresa;
private DataModel model;
private List empresaSelectItem;

public empresasController()
        throws scoDaoException
{
    Iterator<Empresa> itEmp = null;
    empresa = new Empresa();
    empresaSelectItem = new ArrayList<SelectItem>();
    InterfaceEmpresaDao idao = new EmpresaDAO();

    itEmp = idao.todasEmpresas().iterator();        
    
    while ( itEmp.hasNext() )
    {
        empresa = (Empresa) itEmp.next(); 
        empresaSelectItem.add( new SelectItem( empresa.getIdEmpresa(), empresa.getNome() ));            
    }
    
}

public List<SelectItem> getEmpresaSelectItem()
{
    return empresaSelectItem;
}

public void setEmpresaSelectItem( List<SelectItem> empresaSelectItem  )
{
    this.empresaSelectItem = empresaSelectItem;
}

public String novaEmpresa()
{
   this.empresa = new Empresa();
    return "novaEmp";
}

public Empresa getEmpresa()
{
    return empresa;
}

public void setEmpresa(Empresa emp)
{
    this.empresa = emp;
}

public DataModel getTodos()
        throws scoDaoException
{
    InterfaceEmpresaDao idao = new EmpresaDAO();
    model = new ListDataModel( idao.todasEmpresas());
    return model;     
}

public Empresa getEmpresaFromEditOrDelete()
{
    Empresa emp = (Empresa) model.getRowData();
    return emp;        
}

public String editar()
{
    Empresa emp = getEmpresaFromEditOrDelete();
    setEmpresa(emp);
    return "editarEmp";
}

public String update()
        throws scoDaoException
{
    InterfaceEmpresaDao idao = new EmpresaDAO();
    idao.atualizar(empresa);
    return "sucesso_atuEmp";     
}

public String excluir()
{
    Empresa emp = getEmpresaFromEditOrDelete();
    setEmpresa(emp);
    return "excluirEmp";
}

public String delete()
        throws scoDaoException
{
    InterfaceEmpresaDao idao = new EmpresaDAO();
    idao.excluir(empresa);
    return "sucesso_excEmp";     
}

public String create()
        throws scoDaoException
{
    InterfaceEmpresaDao idao = new EmpresaDAO();

    if ( empresa == null )
        System.out.println("vazio emp ");
        
    if ( empresa.getEndereco() == null )
        System.out.println("vazio end");
        
    idao.salvar(empresa);
    return "sucesso_insEmp";     
}

public String validar( String cnpj )
        throws scoDaoException
{
    InterfaceEmpresaDao idao = new EmpresaDAO();
    
    if  ( ! idao.validarCNPJ(cnpj) )
        return "CNPJ_invalido";
    else
        return "";
}

}

página incluir empresa, onde ocorre o erro.

Incluir Empresa

<f:view>
<h:form id=“cadEmp” >

Incluir Empresa

..Identificador..:
..Nome...........:
..Razão Social...:
..CNPJ...........:

..Endereço.......:
..Bairro.........:
..Cep............:
..Cidade.........:
..Estado.........:

..Contato........:
..Fones..........:

..................... ... ...

Alguém tem alguma ideia o por que do problema.

Desde já, agradeço, Geraldo.

O problema está no seu DAO filhote.

Na sua classe EmpresaDAO, você está fazendo algum cagueits quando é para atualizar e quando é para incluir. E aposto que no seu banco de dados, o Endereco é obrigatorio.

Ou seja, o atualizar já possui o endereço, mas quando vai incluir, o endereço está null e ai aconteçe o pau.

valeu, era isso mesmo…

obrigadão.