Problemas ao passar os dados de uma entidade para um managedBean, usando JPA + JSF

Boa tarde caros amigos. estou com o seguinte problema. Estou tentando gravar os dados digitados pelo usuario, e ocorre erro do tipo “retornado null”. Não sei que erro é esse. Aqui embaixo, algumas explicações.

meu Bean


@Entity(name="tbsisc_viagem")
@Table(name="tbsisc_viagem")
public class Viagem {
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name="pktbsisc_viagem")
	private Integer id;
	@Column(name="ds_cidade")
	private String cidade;
	@Column(name="ds_objetivo")
	private String objetivo;
	@Column(name="dt_periodoinicial")
	private Date periodoInicial;
	@Column(name="dt_periodofinal")
	private Date periodoFinal;
	@Column(name="ds_pessoa")
	private String nomePessoa;
	@Column(name="in_passagem")
	private boolean passagem;
	@Column(name="in_ajudacusto")
	private boolean ajudaDeCusto;
	@Column(name="in_diaria")
	private boolean diaria;
	@Column(name="in_coletiva")
	private boolean coletiva;
	@Column(name="vl_ajudacusto")
	private int valorDaAjudaDeCusto;
	@Column(name="vl_diaria")
	private Double valorDaDiaria;
	@Column(name="vl_passagens")
	private Double valorDaPassagem;
	
	
	public Viagem() {
	
	}
	
	/**
	 * @param id
	 * @param objetivo
	 * @param periodoInicial
	 * @param periodoFinal
	 * @param nomePessoa
	 * @param passagem
	 * @param ajudaDeCusto
	 * @param diaria
	 * @param coletiva
	 * @param valorDaAjudaDeCusto
	 * @param valorDaDiaria
	 * @param valorDaPassagem
	 */
	public Viagem(Integer id, String objetivo, Date periodoInicial,
			Date periodoFinal, String nomePessoa, boolean passagem,
			boolean ajudaDeCusto, boolean diaria, boolean coletiva,
			int valorDaAjudaDeCusto, Double valorDaDiaria,
			Double valorDaPassagem) {
		super();
		this.id = id;
		this.objetivo = objetivo;
		this.periodoInicial = periodoInicial;
		this.periodoFinal = periodoFinal;
		this.nomePessoa = nomePessoa;
		this.passagem = passagem;
		this.ajudaDeCusto = ajudaDeCusto;
		this.diaria = diaria;
		this.coletiva = coletiva;
		this.valorDaAjudaDeCusto = valorDaAjudaDeCusto;
		this.valorDaDiaria = valorDaDiaria;
		this.valorDaPassagem = valorDaPassagem;
	}

	/**
	 * @return the id
	 */
	public Integer getId() {
		return id;
	}

	/**
	 * @param id the id to set
	 */
	public void setId(Integer id) {
		this.id = id;
	}

	/**
	 * @return the objetivo
	 */
	public String getObjetivo() {
		return objetivo;
	}

	/**
	 * @param objetivo the objetivo to set
	 */
	public void setObjetivo(String objetivo) {
		this.objetivo = objetivo;
	}

	/**
	 * @return the periodoInicial
	 */
	public Date getPeriodoInicial() {
		return periodoInicial;
	}

	/**
	 * @param periodoInicial the periodoInicial to set
	 */
	public void setPeriodoInicial(Date periodoInicial) {
		this.periodoInicial = periodoInicial;
	}

	/**
	 * @return the periodoFinal
	 */
	public Date getPeriodoFinal() {
		return periodoFinal;
	}

	/**
	 * @param periodoFinal the periodoFinal to set
	 */
	public void setPeriodoFinal(Date periodoFinal) {
		this.periodoFinal = periodoFinal;
	}

	/**
	 * @return the nomePessoa
	 */
	public String getNomePessoa() {
		return nomePessoa;
	}

	/**
	 * @param nomePessoa the nomePessoa to set
	 */
	public void setNomePessoa(String nomePessoa) {
		this.nomePessoa = nomePessoa;
	}

	/**
	 * @return the passagem
	 */
	public boolean isPassagem() {
		return passagem;
	}

	/**
	 * @param passagem the passagem to set
	 */
	public void setPassagem(boolean passagem) {
		this.passagem = passagem;
	}

	/**
	 * @return the ajudaDeCusto
	 */
	public boolean isAjudaDeCusto() {
		return ajudaDeCusto;
	}

	/**
	 * @param ajudaDeCusto the ajudaDeCusto to set
	 */
	public void setAjudaDeCusto(boolean ajudaDeCusto) {
		this.ajudaDeCusto = ajudaDeCusto;
	}

	/**
	 * @return the diaria
	 */
	public boolean isDiaria() {
		return diaria;
	}

	/**
	 * @param diaria the diaria to set
	 */
	public void setDiaria(boolean diaria) {
		this.diaria = diaria;
	}

	/**
	 * @return the coletiva
	 */
	public boolean isColetiva() {
		return coletiva;
	}

	/**
	 * @param coletiva the coletiva to set
	 */
	public void setColetiva(boolean coletiva) {
		this.coletiva = coletiva;
	}

	/**
	 * @return the valorDaAjudaDeCusto
	 */
	public int getValorDaAjudaDeCusto() {
		return valorDaAjudaDeCusto;
	}

	/**
	 * @param valorDaAjudaDeCusto the valorDaAjudaDeCusto to set
	 */
	public void setValorDaAjudaDeCusto(int valorDaAjudaDeCusto) {
		this.valorDaAjudaDeCusto = valorDaAjudaDeCusto;
	}

	/**
	 * @return the valorDaDiaria
	 */
	public Double getValorDaDiaria() {
		return valorDaDiaria;
	}

	/**
	 * @param valorDaDiaria the valorDaDiaria to set
	 */
	public void setValorDaDiaria(Double valorDaDiaria) {
		this.valorDaDiaria = valorDaDiaria;
	}

	/**
	 * @return the valorDaPassagem
	 */
	public Double getValorDaPassagem() {
		return valorDaPassagem;
	}

	/**
	 * @param valorDaPassagem the valorDaPassagem to set
	 */
	public void setValorDaPassagem(Double valorDaPassagem) {
		this.valorDaPassagem = valorDaPassagem;
	}

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

	public String getCidade() {
		return cidade;
	}
	
	/* (non-Javadoc)
	 * @see java.lang.Object#hashCode()
	 */
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		return result;
	}

	/* (non-Javadoc)
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Viagem other = (Viagem) obj;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		return true;
	}

meu ManagedBean


public class SolicitacaoMB {
	private SolicitacaoDAO solicitacaoDAO = new SolicitacaoDAO();
	private Solicitacao solicitacao;
	private ViagemDAO viagemDAO = new ViagemDAO();
	private Viagem viagem;
	private PessoaMB pessoaMb = new PessoaMB();

	private static final long serialVersionUID = 1L;

	public SolicitacaoMB() {
	
	}

	public void inserirViagem(){
		
		viagem = new Viagem();
		viagemDAO.inserirViagem(viagem);
	
	}
	
	public void setPessoaMb(PessoaMB pessoaMb) {
		this.pessoaMb = pessoaMb;
	}

	public PessoaMB getPessoaMb() {
		return pessoaMb;
	}

	public Solicitacao getSolicitacao() {
		return solicitacao;
	}

	public void setSolicitacao(Solicitacao solicitacao) {
		this.solicitacao = solicitacao;
	}

minha página de cadastro:


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:ui="http://java.sun.com/jsf/facelets">
<head></head>
<body>
<f:view>
	<h:form >
		<h:outputText value="Solicitacao" />
		<br />
		<br />
		<h:outputText value="Nome da pessoa:   " />
		<h:outputText value="#{pessoaMB.pessoa.nome}" />
		<br />
		<br />
		<h:outputLabel value="Cidade" for="cidade" />
		<h:inputText value="#{solicitacaoMB.viagem.cidade}" id="cidade" />
		<br />
		<br />
		<h:outputLabel value="Periodo" />
		<h:inputText value="#{solicitacaoMB.viagem.periodoInicial}" /> a <h:inputText
			value="#{solicitacaoMB.viagem.periodoFinal}" />
		<br />
		<br />
		<h:selectBooleanCheckbox value="#{solicitacaoMB.viagem.ajudaDeCusto}" />Ajuda de custo
<br />
		<br />
		<h:outputLabel value="Valor da Ajuda de Custo:" />
		<h:inputText value="#{solicitacaoMB.viagem.valorDaAjudaDeCusto}" />
		<br />
		<br />
		<h:selectBooleanCheckbox value="#{solicitacaoMB.viagem.diaria}" />Diaria
<br />
		<br />
		<h:outputLabel value="Valor da Diaria:" />
		<h:inputText value="#{solicitacaoMB.viagem.valorDaDiaria}" />
		<br />
		<br />
		<h:selectBooleanCheckbox value="#{solicitacaoMB.viagem.coletiva}" />Coletiva
<br />
		<br />
		<h:outputText value="Justificativa" />
		<br />
		<h:inputTextarea value="#{solicitacaoMB.viagem.objetivo}" />
		<h:selectBooleanCheckbox value="" />Dentro do Estado
<br />
		<br />
		<h:commandButton action="#{solicitacaoMB.inserirViagem}"
			value="Enviar Solicitacao" />
	</h:form>
</f:view>
</body>
</html>

Porém isso não funcionou bem.

alguem poderia me da uma ajuda ?Agradeço desde já.

Esqueci de postar o erro


8/09/2009 15:45:59 com.sun.faces.lifecycle.ProcessValidationsPhase execute
WARNING: /pages/cadSolicitacao.xhtml @18,69 value="#{solicitacaoMB.viagem.cidade}": Target Unreachable, 'viagem' returned null
javax.el.PropertyNotFoundException: /pages/cadSolicitacao.xhtml @18,69 value="#{solicitacaoMB.viagem.cidade}": Target Unreachable, 'viagem' returned null
	at com.sun.facelets.el.TagValueExpression.getType(TagValueExpression.java:62)
	at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:92)
	at javax.faces.component.UIInput.getConvertedValue(UIInput.java:942)
	at javax.faces.component.UIInput.validate(UIInput.java:868)
	at javax.faces.component.UIInput.executeValidate(UIInput.java:1072)
	at javax.faces.component.UIInput.processValidators(UIInput.java:672)
	at javax.faces.component.UIForm.processValidators(UIForm.java:234)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1058)
	at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:700)
	at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
	at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:574)
	at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1527)
	at java.lang.Thread.run(Unknown Source)
08/09/2009 15:45:59 com.sun.faces.lifecycle.Phase doPhase
SEVERE: JSF1054: (Phase ID: PROCESS_VALIDATIONS 3, View ID: /pages/cadSolicitacao.xhtml) Exception thrown during phase execution: javax.faces.event.PhaseEvent[source=com.sun.faces.lifecycle.LifecycleImpl@4f2ec]
08/09/2009 15:45:59 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet Faces Servlet threw exception
javax.el.PropertyNotFoundException: /pages/cadSolicitacao.xhtml @18,69 value="#{solicitacaoMB.viagem.cidade}": Target Unreachable, 'viagem' returned null
	at com.sun.facelets.el.TagValueExpression.getType(TagValueExpression.java:62)
	at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:92)
	at javax.faces.component.UIInput.getConvertedValue(UIInput.java:942)
	at javax.faces.component.UIInput.validate(UIInput.java:868)
	at javax.faces.component.UIInput.executeValidate(UIInput.java:1072)
	at javax.faces.component.UIInput.processValidators(UIInput.java:672)
	at javax.faces.component.UIForm.processValidators(UIForm.java:234)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1058)
	at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:700)
	at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
	at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:574)
	at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1527)
	at java.lang.Thread.run(Unknown Source)

=D

Você precisa instanciar o objeto Viagem na inicialização do seu managed bean.

[]s
Ferry

Fiz oq vc me indicou:

public class SolicitacaoMB {
	private SolicitacaoDAO solicitacaoDAO = new SolicitacaoDAO();
	private Solicitacao solicitacao = new Solicitacao();
	private ViagemDAO viagemDAO = new ViagemDAO();
	private Viagem viagem = new Viagem();
	private PessoaMB pessoaMb = new PessoaMB();

mas nada adiantou

:frowning:

Alguma outra idéia ?

Os Objetos que estão dentro de Viagem e são usados na página devem estar nullos. Se vai precisar usar, tem que estanciar tambem.

Edit: Foi mal, agora que vi que Viagem não tem Objetos que poderiam dar esse erro.

O que acontece é que, eu estou tentando inserir os dados de viagem, porém eles estão indo como nulls… :frowning: . Esse é o problema … !!!

… alguem para dar algum sinal de ajuda ?

Está usando a4j?
Verifique se o button que chama o evento que salva o objeto viagem é ajaxSingle=“true”, caso seja remova-o OU use a tag “process” especificando os ids dos componentes que você queira que sejam processados pra enviarem o dados pro ManagedBean (referentes a viagem).

Seu atributo viagem no manegedbean tem get e set??

Pode ser isso…

Se o erro ainda é o mesmo, o problema é ainda é o viagem e pode ser mesmo a falta de get e set como dito acima, ou problema de atualização do war. Se for outro erro, poste aqui pra gente ajudar.

cara, por que antes de inserir a viagem você está dando um new Viagem() ?

     public void inserirViagem(){  
           
          viagem = new Viagem();  
          viagemDAO.inserirViagem(viagem);  
       
     }