Javax.servlet.ServletException

5 respostas
Kleber-rr

[color=blue]Olá pessoal!! sou novato no Java, e estou com um problema num projeto exercício que estamos fazendo. Quando eu mando rodar no servidor, aparece o seguinte erro:[/color]

HTTP Status 500 -


type Exception report

message

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

exception

javax.servlet.ServletException: javax.servlet.ServletException: /contas.jsp(23,3) ‘#{contaPagarHandler.contaPagar.descricao}’ Property ‘contaPagar’ not found on type br.com.caelum.fj26.ContaPagarHandler
br.com.caelum.fj26.util.HibernateSessionFilter.doFilter(HibernateSessionFilter.java:23)

root cause

javax.servlet.ServletException: /contas.jsp(23,3) ‘#{contaPagarHandler.contaPagar.descricao} Property contaPagar not found on type br.com.caelum.fj26.ContaPagarHandler

javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)

org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)

org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)

br.com.caelum.fj26.util.HibernateSessionFilter.doFilter(HibernateSessionFilter.java:20)

root cause

org.apache.jasper.el.JspPropertyNotFoundException: /contas.jsp(23,3) ‘#{contaPagarHandler.contaPagar.descricao} Property contaPagar not found on type br.com.caelum.fj26.ContaPagarHandler

org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:104)

javax.faces.component.UIOutput.getValue(UIOutput.java:173)

com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:189)

com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:320)

com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:200)

javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:833)

com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:279)

com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:242)

javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:809)

javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)

javax.faces.render.Renderer.encodeChildren(Renderer.java:137)

javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:809)

javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)

javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)

com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:244)

com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:175)

org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)

org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:237)

com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)

com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)

com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)

javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)

org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)

org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)

br.com.caelum.fj26.util.HibernateSessionFilter.doFilter(HibernateSessionFilter.java:20)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.14 logs.

Note que ele diz que ele diz: Property ‘contaPagar’ not found on type br.com.caelum.fj26.ContaPagarHandler. Eu já verifiquei o código e está assim:

contas.jsp =========================================================

<%@ taglib uri=“http://java.sun.com/jsf/core” prefix=“f”%>
<%@ taglib uri=“http://java.sun.com/jsf/html” prefix=“h”%>
<%@ taglib uri=“http://richfaces.org/a4j” prefix=“a4j” %>
<%@ taglib uri=“http://richfaces.org/rich” prefix=“rich” %>

Contas a pagar
<f:subview id="contas">
	<h:form>
		<h:panelGrid>
		<h:outputText value="Fornecedor"/>
		<h:selectOneMenu binding="#{contaPagarHandler.fornecedorSelecionado}">
			<f:selectItem itemValue="0" itemLabel="Selecione Fornecedor"/>
			<f:selectItems value="#{contaPagarHandler.fornecedoresParaComboBox}" />
		</h:selectOneMenu>
		
		<h:outputText value="Descrição"/>
		<h:inputText value="#{contaPagarHandler.contaPagar.descricao}"/>
		
		<h:outputText value="Valor"/>
		<h:inputText value="#{contaPagarHandler.contaPagar.valor}"/>
		
		<h:selectBooleanCheckbox value="#{contaPagarHandler.contaPagar.pago}">
			<h:outputText value="Pago? "/></h:selectBooleanCheckbox>
		
		<h:messages/>
		
		<h:commandButton actionListener="#{contaPagarHandler.salva}" value="gravar"/>
		
		<rich:dataList value="#{contaPagarHandler.contas}" var="conta">
			<h:outputText value="#{conta.descricao}"/>
			<h:outputText value=" - "/>
			<h:outputText value="#{conta.fornecedor.nome}"/>
			</rich:dataList>
	</h:panelGrid>
	</h:form>
</f:subview>

Agora o ContaPagar.java ============================================

package br.com.caelum.fj26.modelo;

import java.util.Calendar;
import java.util.GregorianCalendar;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

import javax.persistence.ManyToOne;

import javax.persistence.Temporal;

import javax.persistence.TemporalType;

@Entity
public class ContaPagar {

@Id
@GeneratedValue
private Long id;

private String descricao;
private Double valor;

@Temporal(TemporalType.DATE)
private Calendar data = new GregorianCalendar();

@ManyToOne
private Fornecedor fornecedor;
private boolean pago;

public long getId() {
	return id;
}

public void setId(long id) {
	this.id = id;
}

public String getDescricao() {
	return descricao;
}

public void setDescricao(String descricao) {
	this.descricao = descricao;
}

public Double getValor() {
	return valor;
}

public void setValor(Double valor) {
	this.valor = valor;
}

public Calendar getData() {
	return data;
}

public void setData(Calendar data) {
	this.data = data;
}

public Fornecedor getFornecedor() {
	return fornecedor;
}

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

public boolean isPago() {
	return pago;
}

public void setPago(boolean pago) {
	this.pago = pago;
}

}

Agora o ContaPagarHandler.java =======================================================

package br.com.caelum.fj26;

import java.util.ArrayList;
import java.util.List;

import javax.el.ELContext;

import javax.el.ELResolver;

import javax.faces.component.html.HtmlSelectOneMenu;

import javax.faces.context.FacesContext;

import javax.faces.event.ActionEvent;

import javax.faces.model.SelectItem;

import org.hibernate.Session;

import br.com.caelum.fj26.dao.Dao;

import br.com.caelum.fj26.modelo.ContaPagar;

import br.com.caelum.fj26.modelo.Fornecedor;

import br.com.caelum.fj26.util.HibernateUtil;
public class ContaPagarHandler {

private ContaPagar contaPagar = new ContaPagar();

// removida para usar o banco de dados.

// private List contas = new ArrayList();

private HtmlSelectOneMenu fornecedorSelecionado;
public HtmlSelectOneMenu getFornecedorSelecionado() {
	return fornecedorSelecionado;
}

public void setFornecedorSelecionado(HtmlSelectOneMenu fornecedorSelecionado) {
	this.fornecedorSelecionado = fornecedorSelecionado;
}

// public ContaPagar getContaPagar() {
public List<ContaPagar> getContas() {
	Session session = HibernateUtil.currentSession();
	Dao<ContaPagar> dao = new Dao<ContaPagar>(session, ContaPagar.class);
	return dao.list();
}

private FornecedorHandler pegaFornecedorHandler() {
	FacesContext facesContext = FacesContext.getCurrentInstance();
	ELContext elContext = facesContext.getELContext();
	ELResolver resolver = facesContext.getApplication().getELResolver();
	Object fh = resolver.getValue(elContext, null, "fornecedorHandler");

	return (FornecedorHandler) fh;
}

public List<SelectItem> getFornecedoresParaComboBox() {
	List<SelectItem> lista = new ArrayList<SelectItem>();

	// usaremos o id como valor e o nome como label para os SelectItem.
	FornecedorHandler handler = pegaFornecedorHandler();
	for (Fornecedor f : handler.getFornecedores()) {
		lista.add(new SelectItem(f.getId(), f.getNome()));
	}
	return lista;
}

// cria o metodo que grava no ContaPagarHandler a ContaPagar criada dentro
// da sua colecao
public void salva(ActionEvent event) {
	System.out.println("gravando conta: " + contaPagar.getDescricao());
	System.out.println("pago: " + contaPagar.isPago());

	Session session = HibernateUtil.currentSession();
	Dao<Fornecedor> fornecedorDao = new Dao<Fornecedor>(session,
			Fornecedor.class);
	Dao<ContaPagar> contaPagarDao = new Dao<ContaPagar>(session,
			ContaPagar.class);

	Long id = Long.valueOf(fornecedorSelecionado.getValue().toString());
	Fornecedor f = fornecedorDao.load(id);

	contaPagar.setFornecedor(f);
	System.out.println(contaPagar.getFornecedor().getNome());

	contaPagarDao.save(contaPagar);
	contaPagar = new ContaPagar();
}

}

Agora o face-config.xml ==========================================================

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



messages

pt
en



autenticador
br.com.caelum.fj26.LoginHandler
session

<managed-bean>
	<managed-bean-name>fornecedorHandler</managed-bean-name>
	<managed-bean-class>br.com.caelum.fj26.FornecedorHandler</managed-bean-class>
	<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
	<managed-bean-name>contaPagarHandler</managed-bean-name>
	<managed-bean-class>br.com.caelum.fj26.ContaPagarHandler</managed-bean-class>
	<managed-bean-scope>session</managed-bean-scope>
</managed-bean>

<navigation-rule>
	<from-view-id>/olajsf.jsp</from-view-id>
	<navigation-case>
		<from-outcome>sucesso</from-outcome>
		<to-view-id>/mainpage.jsp</to-view-id>
	</navigation-case>
</navigation-rule>

[color=blue]O que pode ser esse erro?? alguem pode me ajudar?? Agradeço a colaboração![/color]

5 Respostas

furutani

Crie o get/set para o atributo contaPagar.

araujoGo

Boa Tarde pessoal,
Abaixo um problema interminante que estou tendo com primeira aplicação, Eclipse+ HIbernate4.1 +JSP2.1

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

exception

javax.servlet.ServletException: /mostraprodutos.jsp(13,1) ‘#{produtoController.exibir}’ Property ‘exibir’ not found on type br.com.controller.ProdutoController
javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)

root cause

org.apache.jasper.el.JspPropertyNotFoundException: /mostraprodutos.jsp(13,1) ‘#{produtoController.exibir} Property exibir not found on type br.com.controller.ProdutoController

org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:109)

javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)

javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)

javax.faces.component.UIData.getValue(UIData.java:731)

javax.faces.component.UIData.getDataModel(UIData.java:1798)

javax.faces.component.UIData.setRowIndexWithoutRowStatePreserved(UIData.java:484)

javax.faces.component.UIData.setRowIndex(UIData.java:473)

com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:81)

javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:820)

javax.faces.component.UIData.encodeBegin(UIData.java:1118)

javax.faces.component.UIComponent.encodeAll(UIComponent.java:1777)

javax.faces.render.Renderer.encodeChildren(Renderer.java:168)

javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)

javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)

javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)

com.sun.faces.application.view.JspViewHandlingStrategy.doRenderView(JspViewHandlingStrategy.java:432)

com.sun.faces.application.view.JspViewHandlingStrategy.renderView(JspViewHandlingStrategy.java:233)

com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125)

com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)

com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)

com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)

javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)

mostraproduto.jsp------------------------------------------------------------------------------------------------------------------------------------------------------

package br.com.controller;

import javax.faces.model.DataModel;

import javax.faces.model.ListDataModel;

import javax.xml.ws.spi.ServiceDelegate;

import br.com.bean.Produto;
import br.com.dao.ProdutoDAO;

public class ProdutoController {

private Produto produto;

private DataModel model;
public ProdutoController(){
	produto = new Produto();
}

public Produto getProduto() {
	return produto;
}

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

public String salvar(){
	ProdutoDAO produtodao = new ProdutoDAO();
	produtodao.salvar(produto);
	return "salvar";
}

public DataModel getExibir(){
	ProdutoDAO produtoDao = new ProdutoDAO();
	model = new ListDataModel(produtoDao.listarProduto());
	return model;
}

public DataModel getExibirBusca(){
	ProdutoDAO produtodao = new ProdutoDAO();
	produtodao.buscarProduto(produto.getNomeProduto());
	
	model = new ListDataModel(produtodao.buscarProduto(produto.getNomeProduto()));
	return model;
}

}

Alguma idéia???

drsmachado

Várias.
A primeira é: Leia as regras do fórum.
A segunda é: Ao postar código, utilize a tag [code]
A terceira é: Abra um novo tópico, não viu que este é de 3 anos atrás?

araujoGo

Tudo bem, achei que as pessoas se irritassem mais com aberturas de mais e mais tópicos, vou ler, obrigado pelas dicas… paz e amor

drsmachado

Não se trata de irritação, mas de assertividade.
Siga as regras do fórum e vai ter as respostas, sem maiores preocupações.

Criado 2 de julho de 2009
Ultima resposta 16 de mai. de 2012
Respostas 5
Participantes 4