daniel.info 19 de out. de 2009
Vc precisa chamar o construtor de passagem na classe Viagem
Passagem passagem = new Passagem();
EuclidesFilizola 19 de out. de 2009
Já tentei fazer o mesmo ,mas não funcionou.
=(
daniel.info 19 de out. de 2009
vc colocou os get e set de passagem?
EuclidesFilizola 20 de out. de 2009
sim coloquei
aqui meu mb
public class SolicitacaoMB {
private SolicitacaoDAO solicitacaoDAO = new SolicitacaoDAO ();
private Solicitacao solicitacao = new Solicitacao ();
private Usuario usuario ;
private UsuarioDAO usuarioDAO = new UsuarioDAO ();
private Viagem viagem ;
private ViagemDAO viagemDAO = new ViagemDAO ();
private Passagem passagem ;
private static final long serialVersionUID = 1L ;
public SolicitacaoMB () {
}
public String iniciarFaces (){
viagem = new Viagem ();
setPassagem ( new Passagem ());
return "Solicitacao" ;
}
public String inserirViagem (){
viagemDAO . salvar ( viagem );
viagem = null ;
return "sucesso" ;
}
public Solicitacao getSolicitacao () {
return solicitacao ;
}
public void setSolicitacao ( Solicitacao solicitacao ) {
this . solicitacao = solicitacao ;
}
public void setSolicitacaoDAO ( SolicitacaoDAO solicitacaoDAO ) {
this . solicitacaoDAO = solicitacaoDAO ;
}
public SolicitacaoDAO getSolicitacaoDAO () {
return solicitacaoDAO ;
}
public Viagem getViagem () {
return viagem ;
}
public void setViagem ( Viagem viagem ) {
this . viagem = viagem ;
}
public ViagemDAO getViagemDAO () {
return viagemDAO ;
}
public void setViagemDAO ( ViagemDAO viagemDAO ) {
this . viagemDAO = viagemDAO ;
}
public void setUsuario ( Usuario usuario ) {
this . usuario = usuario ;
}
public Usuario getUsuario () {
return usuario ;
}
public void setUsuarioDAO ( UsuarioDAO usuarioDAO ) {
this . usuarioDAO = usuarioDAO ;
}
public UsuarioDAO getUsuarioDAO () {
return usuarioDAO ;
}
public void setPassagem ( Passagem passagem ) {
this . passagem = passagem ;
}
public Passagem getPassagem () {
return passagem ;
}
…
daniel.info 20 de out. de 2009
Bom,
seguindo sua lógica, vc executa o metodo iniciarFaces e então chama diretamente o set de passagem e cria um objeto,
vc poderia fazer o seguinte
private Passagem passagem ;
public String iniciarFaces () {
viagem = new Viagem () ;
// setPassagem ( new Passagem ()) ;
passagem = new Passagem () ;
// aqui j á é possivel utilizar a instancia sem problemas com nullPointer
return "Solicitacao" ;
}
ou
private Passagem passagem = new Passagem () ;
public String iniciarFaces () {
viagem = new Viagem () ;
// aqui vc j á consegue utilizar a instancia de passagem sem problemas porque j á foi criado o objeto .
return "Solicitacao" ;
}
e também
public SolicitacaoMB() {
viagem = new Viagem();
passagem = new Passagem();
}
O Seu objeto está nulo no momento que vc tenta setar ele no seu xhtml, se não for isso, veja se vc declarou os MB no faces-config, ou AppicationContext caso use Spring.
EuclidesFilizola 20 de out. de 2009
Fala Daniel, já resolvi meu problema desta forma:
O problema não está dando no Managed Bean, e sim nos beans, ou seja, problema era no mapeamento das classes.
Agora deixa eu fazer outro questionamento.
O correto é construir managed-beans por entidade separadas ? Ou se deve construir 1 só, por página ?
Você saberia me responder ?
daniel.info 20 de out. de 2009
Entendi.
Aqui no meu trabalho criamos por entidades separadas.
Depois utilizamos o Spring para gerenciar tudo.
Não sei se é o correto, mas facilita, pois as vezes precisamos fazer comunicação entre dois managed-bens.