Javax.faces.el.PropertyNotFoundException: Base is null: .produto

2 respostas
smorigo

Boa noite pessoal, estou iniciando um pequeno projeto utilizando Spring, JSF(MyFaces) e Hibernate/JPA mas estou enfrentando um problema meio estranho.

Criei meu ProdutoDAOImpl da seguinte maneira:

package br.com.fci.dao;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import br.com.fci.bean.Produto;

public class ProdutoDAOImpl extends HibernateDaoSupport implements ProdutoDAO {

	DataModel dataModel;
	Produto produto;
	
	public DataModel getListaProdutos() {
		dataModel = new ListDataModel (getHibernateTemplate().loadAll(Produto.class));		
		return dataModel;
	}
	
	public String editarProduto() {
		produto = (Produto) dataModel.getRowData();
		return "editarProduto";
	}

	public String salvarProduto() {
		try {
			getHibernateTemplate().persist(produto);
		} catch (Exception ex) {
		}
		
		return "salvaProduto";
	}	
	
	public String novoProduto() {
		this.produto = new Produto();
		return "novoProduto";
	}
	
	public Produto getProduto() {
		return produto;
	}

	public void setProduto(Produto produto) {
		this.produto = produto;
	}
	
}

Quando tento acessar o metodo salvarProduto estou recebendo o erro:

SEVERE: Servlet.service() for servlet Faces Servlet threw exception
javax.faces.el.PropertyNotFoundException: Base is null: .produto
	at org.apache.myfaces.el.ValueBindingImpl.resolveToBaseAndProperty(ValueBindingImpl.java:477)
	at org.apache.myfaces.el.ValueBindingImpl.getType(ValueBindingImpl.java:175)
	at org.apache.myfaces.shared_impl.renderkit._SharedRendererUtils.findUIOutputConverter(_SharedRendererUtils.java:58)
	at org.apache.myfaces.shared_impl.renderkit.RendererUtils.findUIOutputConverter(RendererUtils.java:333)
	at org.apache.myfaces.shared_impl.renderkit.RendererUtils.getConvertedUIOutputValue(RendererUtils.java:627)
	at org.apache.myfaces.shared_impl.renderkit.html.HtmlTextRendererBase.getConvertedValue(HtmlTextRendererBase.java:191)
	at javax.faces.component.UIInput.getConvertedValue(UIInput.java:402)
	at javax.faces.component.UIInput.validate(UIInput.java:356)
	at javax.faces.component.UIInput.processValidators(UIInput.java:190)
	at javax.faces.component.UIForm.processValidators(UIForm.java:73)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:776)
	at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:149)
	at org.apache.myfaces.lifecycle.ProcessValidationsExecutor.execute(ProcessValidationsExecutor.java:32)
	at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
	at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:139)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:173)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
	at java.lang.Thread.run(Unknown Source)

Para nao ficar um post muito grande alguns pontos:

  • Adicionei meu Bean ao applicationContext.xml
  • Adicionei meu Bean ao faces-config.xml e configurei o sessionFactory
  • Crio uma pagina com um list e funciona normalmente…

Obrigado pessoal!

2 Respostas

AugustoCSS

já tive problemas parecidos pq estava mantendo em minhas libs os jar’s do MyFaces e do JSF(Sun-RI) juntos. Eu recebia o mesmo erro, de forma intermitente.

Mas o erro pode ser pq o seu “Produto” não foi instanciado. Você está chamando o seu método “novoProduto()” antes de tudo?
Só pra testar, tente declarar o Produto, já criando uma nova instância:

Produto produto = new Produto();

espero ter ajudado

smorigo

Realmente Augusto, mudei o private Produto produto = new Produto(); e soluciono o problema…

[]s

Rafael

Criado 7 de março de 2007
Ultima resposta 8 de mar. de 2007
Respostas 2
Participantes 2