Javax.servlet.ServletException

3 respostas
everson_cardoso1

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
<h:head>
        <title>Sistema de Stock</title>
        <title>Cadastro de Fornecedores</title>
    </h:head>
    <h:body>
        <h2><h:outputText value="Fornecedores" /></h2>
        <hr />
        <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>
aqui esta o meu bean
@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();
	}

3 Respostas

Hebert_Coelho
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:
public Car getCar(){
    if (car == null){
        car = new Car();
    }
    
    return car;
}
everson_cardoso1

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...

<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}"/>

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!!

everson_cardoso1

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

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)

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
persistence.xml

[code]<persistence xmlns="http://java.sun.com/xml/ns/persistence"
			 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
			 xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
							version="2.0">

	<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>

</persistence>

DAO(generico)

public class DAO<T> {

	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);
	}
}

Bean

@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();
	}

}

xhtml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"      
      xmlns:h="http://java.sun.com/jsf/html">
    <f:view contentType="text/html" />
    <h:head>
        <title>Sistema de Stock</title>
        <title>Cadastro de Fornecedores</title>
    </h:head>
    <h:body>
        <h2><h:outputText value="Fornecedores" /></h2>
        <hr />
        <h:form>
        	<f:validateBean>
	        	<h:messages />
		        <h:panelGrid columns="2">
		        	<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}"/>
		
					<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>
</html>

menuBar

@ManagedBean
public class MenuBean {

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

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

index

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"      
      xmlns:h="http://java.sun.com/jsf/html">
    <f:view contentType="text/html" />
    <h:head>
        <title>Sistema de Estoque</title>
    </h:head>
    <h:body>
    <h:form>
    <h:panelGrid columns="1">
        <h:outputText value="Página do sistema de Estoque" />
        <h:commandLink action="#{menuBean.fornecedores}" value="Cadastra Fornecedores"/>
        <h:commandLink action="#{menuBean.listaFornecedores}" value="Lista de Fornecedores"/>
        <h:commandLink action="#{menuBean.listaTodos}" value="Lista Tudo"/>
    </h:panelGrid>
	</h:form>        
    </h:body>
</html>
Criado 26 de novembro de 2012
Ultima resposta 27 de nov. de 2012
Respostas 3
Participantes 2