Javax.servlet.ServletException

bom dia,
pessoal eu estou tentando fazer um cadastro relativamente simples porém estou recebendo esse erro:

javax.el.PropertyNotFoundException: /fornecedores.xhtml @22,70 value="#{fornecedorBean.fornecedores.nome}": Target Unreachable, 'fornecedores' returned null at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:93)

esse é o meu xhtml

[code] <h:head>
Sistema de Stock
Cadastro de Fornecedores
</h:head>
<h:body>

<h:outputText value=“Fornecedores” />




<h:form>
<f:validateBean>
<h:messages />
<h:panelGrid columns=“2”>
<h:outputText value=“Id” rendered="#{fornecedorBean.fornecedores.idFornecedor!=null}" />
<h:inputText value="#{fornecedorBean.fornecedores.idFornecedor}" rendered="#{fornecedorBean.fornecedores.idFornecedor!=null}"/>
	        	<h:outputText value="Nome"/>
	        	<h:inputText value="#{fornecedorBean.fornecedores.nome}"/>

	        	<h:outputText value="Id" rendered="#{produtoBean.produtos.idProduto!=null}" />
	        	<h:inputText value="#{produtoBean.produtos.idProduto}" rendered="#{produtoBean.produtos.idProduto!=null}"/>
	        	
	        	<h:outputText value="Produto"/>
	        	<h:inputText value="#{produtoBean.produtos.descProduto}"/>

	        	<h:outputText value="Id" rendered="#{marcaBean.marcas.idMarca!=null}" />
	        	<h:inputText value="#{marcaBean.marcas.idMarca}" rendered="#{marcaBean.marcas.idMarca!=null}"/>
	        	
	        	<h:outputText value="Marca"/>
	        	<h:inputText value="#{marcaBean.marcas.descMarca}"/>

	        	<h:outputText value="Id" rendered="#{tipoProdutoBean.tipoProdutos.idTipoProduto!=null}" />
	        	<h:inputText value="#{tipoProdutoBean.tipoProdutos.idTipoProduto}" rendered="#{tipoProdutoBean.tipoProdutos.idTipoProduto!=null}"/>
	        	
	        	<h:outputText value="TipoProduto"/>
	        	<h:inputText value="#{tipoProdutoBean.tipoProdutos.descTipoProduto}"/>

	        	<h:commandButton value="Gravar" action="#{fornecedorBean.grava}"/>
	        </h:panelGrid>
        </f:validateBean>
    </h:form>
    <h2><h:outputText value="Lista de Fornecedores" /></h2>
    <hr />
    <h:dataTable value="#{fornecedorBean.fornecedores}" var="fornecedor">
    	<h:column>
    		<f:facet name="header"><h:outputText value="ID"/></f:facet>
    		#{fornecedor.id}
    	</h:column>
    	<h:column>
    		<f:facet name="header"><h:outputText value="Nome"/></f:facet>
    		#{fornecedor.nome}
    	</h:column>
    	<h:column>
    		<f:facet name="header"><h:outputText value="Produto"/></f:facet>
    		#{fornecedor.produto.descProduto}
    	</h:column>
    	<h:column>
    		<f:facet name="header"><h:outputText value="Marca"/></f:facet>
    		#{fornecedor.produto.marca.descMarca}
    	</h:column>
    	<h:column>
    		<f:facet name="header"><h:outputText value="Tipo de Produto"/></f:facet>
    		#{fornecedor.produto.tipoProduto.descTipoProduto}
    	</h:column>
    	<h:column>
    		<f:facet name="header"><h:outputText value="Ações"/></f:facet>
    		<h:form>
    			<h:commandLink value="Remover" action="#{fornecedorBean.remove}">
					<f:setPropertyActionListener value="fornecedor" target="#{fornecedorBean.fornecedor}"/>
    			</h:commandLink> |
    			<h:commandLink value="Alterar">
					<f:setPropertyActionListener value="#{fornecedor}" target="#{fornecedorBean.fornecedor}"/>
    			</h:commandLink>
    		</h:form>
    	</h:column>
    	
    </h:dataTable>
</h:body>[/code]

aqui esta o meu bean

[code]@ViewScoped
@ManagedBean
public class FornecedorBean implements Serializable{

private static final long serialVersionUID = 1L;

private Fornecedor fornecedor = new Fornecedor();
private List<Fornecedor> fornecedores;	
@ManyToMany
private Produto produto;

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

public Fornecedor getFornecedor() {
	return fornecedor;
}
public void setFornecedor(Fornecedor fornecedor) {
	this.fornecedor = fornecedor;
}

public List<Fornecedor> getFornecedores() {
	/*EntityManager em = new JPAUtil().getEntityManager();
	em.getTransaction().begin();
	
	DaoFornecedor dao = new DaoFornecedor(em);
	
	if(fornecedores == null){
		fornecedores = dao.lista();
	}
	
	em.getTransaction().commit();
	em.close();*/
	
	return fornecedores;
}
public void setFornecedores(List<Fornecedor> fornecedores) {
	this.fornecedores = fornecedores;
}

public void grava() {
    EntityManager em = new JPAUtil().getEntityManager();
    em.getTransaction().begin();
    DaoFornecedor dao = new DaoFornecedor(em);
    
    dao.adicionaTodos(fornecedor);
    
    this.fornecedores = dao.lista();
    em.getTransaction().commit();
    em.close();
    
}

public void remove() {
	EntityManager em = new JPAUtil().getEntityManager();
    em.getTransaction().begin();

    DaoFornecedor dao = new DaoFornecedor(em);
    
    if(fornecedor.getIdFornecedor() == null){
    	dao.grava(fornecedor);
    }else{
    	dao.atualiza(fornecedor);
    }
    
    em.getTransaction().commit();
    em.close();
}

private void limpaGrid() {
    this.fornecedor = new Fornecedor();
}

[/code]

Tem muita coisa errada:

  1. fornecedorBean.fornecedores.nome => não se navega assim em coleções. Você teria que ter 1 objeto do tipo fornecedor e fazer fornecedorBean.fornecedore.nome.

  2. Target Unreachable, ‘fornecedores’ returned null é por que o seu getFornecedores está retornando null. Você tem que fazer algo do tipo:[code]public Car getCar(){
    if (car == null){
    car = new Car();
    }

    return car;
    }[/code]

então, eu estava tentando pegar de uma lista mas como vc me alertou não era possível então passei a pergar de “fornecedor” que é do “Fornecedor” viz assim…

[code]<h:outputText value=“Id” rendered="#{fornecedorBean.fornecedor.idFornecedor!=null}" />
<h:inputText value="#{fornecedorBean.fornecedor.idFornecedor}" rendered="#{fornecedorBean.fornecedor.idFornecedor!=null}"/>

	        	<h:outputText value="Nome"/>
	        	<h:inputText value="#{fornecedorBean.fornecedor.nome}"/>[/code]

ai eu estava recebendo esse erro, eu vi em um post aqui mesmo no GUJ que era porque estava configurando o meu mbean no config e na anotação porém eu só estou usando anotação

java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.sql.Result at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233) at javax.faces.component.UIData.getDataModel(UIData.java:1259) at javax.faces.component.UIData.setRowIndex(UIData.java:447) at com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:81) at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:823) at javax.faces.component.UIData.encodeBegin(UIData.java:937) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1611) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1616) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1616) at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:380) at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:126) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:127) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:313) 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.Http11Processor.process(Http11Processor.java:849) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454) at java.lang.Thread.run(Thread.java:722)

e esse erro ocorre quando eu retiro a anotação @ManagedBean

WARNING: /fornecedores.xhtml @22,68 value="#{fornecedorBean.fornecedor.nome}": Target Unreachable, identifier 'fornecedorBean' resolved to null javax.el.PropertyNotFoundException: /fornecedores.xhtml @22,68 value="#{fornecedorBean.fornecedor.nome}": Target Unreachable, identifier 'fornecedorBean' resolved to null at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:93) at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:95) at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1008) at javax.faces.component.UIInput.validate(UIInput.java:934) at javax.faces.component.UIInput.executeValidate(UIInput.java:1189) at javax.faces.component.UIInput.processValidators(UIInput.java:691) at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1080) at javax.faces.component.UIForm.processValidators(UIForm.java:243) at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1080) at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1080) at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1180) at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312) 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.Http11Processor.process(Http11Processor.java:849) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454) at java.lang.Thread.run(Thread.java:722)

GRATO PELA AJUDA!!

saca só, eu vi um pessoal aqui no GUJ que tiveram o mesmo problema e eles não tiveram uma resposta… de todo modo eu consegui corrigir os erros acima mas porém ainda estou com problemas abaixo vo colocar o codigo se puderem dar uma olhada ficarei feliz…

essa é a tela que o tomcat traz no browser

[code]description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: java.lang.ExceptionInInitializerError
javax.faces.webapp.FacesServlet.service(FacesServlet.java:325)
root cause

javax.faces.el.EvaluationException: java.lang.ExceptionInInitializerError
javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
javax.faces.component.UICommand.broadcast(UICommand.java:315)
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:775)
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1267)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)[/code]

e esse é no console

[quote]Exception in thread “main” java.lang.ExceptionInInitializerError
at br.com.tcc.teste.TesteInsere.main(TesteInsere.java:21)
Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named controleestock
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32)
at br.com.tcc.infra.JPAUtil.(JPAUtil.java:12)
… 1 more[code]

persistence.xml

[code]

<persistence-unit name="controleestoque">
	<provider>org.hibernate.ejb.HibernatePersistence</provider>
	<class>br.com.tcc.modelo.Fonecedor</class>
	
	<properties>
		<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect"/>
		<property name="hibernate.hbm2ddl.auto" value="update"/>
		<property name="hibernate.show_sql" value="true"/>
		<property name="hibernate.format_sql" value="true"/>
		
		<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
		<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/tcc"/>
		<property name="javax.persistence.jdbc.user" value="root"/>
		<property name="javax.persistence.jdbc.password" value="root"/>
	</properties>
</persistence-unit>

[/code]

DAO(generico)

[code]public class DAO {

private final Class<T> classe;

public DAO(Class<T> classe) {
	this.classe = classe;

}

public void adiciona(T t) {
	EntityManager em = new JPAUtil().getEntityManager();
	em.getTransaction().begin();
	em.persist(t);
	em.getTransaction().commit();
	em.close();
	
}

public void remove(T t) {
	EntityManager em = new JPAUtil().getEntityManager();
	em.getTransaction().begin();
	em.remove(em.merge(t));
	em.getTransaction().commit();
	em.close();
	
}

public void atualiza(T t){
	EntityManager em = new JPAUtil().getEntityManager();
	em.getTransaction().begin();
	em.merge(t);
	em.getTransaction().commit();
	em.close();
	
}

public List<T> lista() {
	EntityManager em = new JPAUtil().getEntityManager();
	CriteriaQuery<T> query = em.getCriteriaBuilder().createQuery(classe);
	query.select(query.from(classe));

	List<T> lista = em.createQuery(query).getResultList();
	
	em.close();
	return lista;
}

public T buscaPorID(Integer id) {
	EntityManager em = new JPAUtil().getEntityManager();
	return (T) em.find(classe, id);
}

}[/code]

Bean

[code]@RequestScoped
@ManagedBean
public class FornecedorBean {

private Fornecedor fornecedor = new Fornecedor();
private List<Fornecedor> fornecedores;

public void grava() {
	DAO<Fornecedor> dao = new DAO<Fornecedor>(Fornecedor.class);
	dao.lista();
	if(fornecedor == null){
		fornecedor = new Fornecedor();
		System.out.println("Gravando a fornecedor");
		this.fornecedor = new Fornecedor();
	}
}

public void remove() {
	System.out.println("Removendo a fornecedor");
}

public Fornecedor getFornecedor() {
	return fornecedor;
}

public void setFornecedor(Fornecedor fornecedor) {
	this.fornecedor = fornecedor;
}

public List<Fornecedor> getFornecedores() {
	System.out.println("Listando os fornecedores");
	this.fornecedor = new Fornecedor();
	return fornecedores;
}

private void limpaFormularioDoJSF() {
	this.fornecedor = new Fornecedor();
}

}[/code]

xhtml

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

Sistema de Stock Cadastro de Fornecedores


	        	<h:outputText value="Nome"/>
	        	<h:inputText value="#{fornecedorBean.fornecedor.nome}"/>
	
				<h:outputText value="Marca"/>
				<h:inputText value="#{fornecedorBean.fornecedor.marca}"/>
				
	        	<h:outputText value="produto"/>
				<h:inputText value="#{fornecedorBean.fornecedor.produto}" />
	
	        	<h:outputText value="Tipo de Produto"/>
	        	<h:inputText value="#{fornecedorBean.fornecedor.tipoProduto}"/>
	        	
	        	<h:commandButton value="Gravar" action="#{fornecedorBean.grava}"/>
	        </h:panelGrid>
        </f:validateBean>
    </h:form>
    <h2><h:outputText value="Lista de Fornecedores" /></h2>
    <hr />
    <h:dataTable value="#{fornecedorBean.fornecedores}" var="fornecedor">
    	<h:column>
    		<f:facet name="header"><h:outputText value="ID"/></f:facet>
    		#{fornecedor.id}
    	</h:column>
    	<h:column>
    		<f:facet name="header"><h:outputText value="Nome"/></f:facet>
    		#{fornecedor.nome}
    	</h:column>
    	<h:column>
    		<f:facet name="header"><h:outputText value="Produto"/></f:facet>
    		#{fornecedor.produto}
    	</h:column>
    	<h:column>
    		<f:facet name="header"><h:outputText value="Marca"/></f:facet>
    		#{fornecedor.marca}
    	</h:column>
    	<h:column>
    		<f:facet name="header"><h:outputText value="Tipo de Produto"/></f:facet>
    		#{fornecedor.tipoProduto}
    	</h:column>
    	<h:column>
    		<f:facet name="header"><h:outputText value="Ações"/></f:facet>
    		<h:form>
    			<h:commandLink value="Remover" action="#{fornecedorBean.remove}">
					<f:setPropertyActionListener value="fornecedor" target="#{fornecedorBean.fornecedor}"/>
    			</h:commandLink> |
    			<h:commandLink value="Alterar">
					<f:setPropertyActionListener value="#{fornecedor}" target="#{fornecedorBean.fornecedor}"/>
    			</h:commandLink>
    		</h:form>
    	</h:column>
    	
    </h:dataTable> 
</h:body>
[/code]

menuBar

[code]@ManagedBean
public class MenuBean {

public String fornecedores() {
	return "fornecedores";
}

public String listaFornecedores() {
	return "listaFornecedores";
}

public String listaTudo() {
	return "listaTudo";
}

}[/code]

index

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

Sistema de Estoque [/code]