Erro ao mostrar os dados com JSTL[RESOLVIDO]

Boa noite galera!
Gostaria de saber, porque não estou conseguindo imprimir os dados do banco com o jstl.
Segue o código.

[code]public List pesquisaEntrada(long codProduto) {
List lista = new ArrayList();
try {
PreparedStatement stmt = con
.prepareStatement(“select t1.cod_produto,t1.num_fornecedor,t1.num_funcionario,t1.dta_cadastro,”
+ "t1.valor,t1.quantidade_entrada,t2.nom_produto,t3.nom_fornecedor,t4.nom_funcionario from entrada_produto t1,produto "
+ "t2,fornecedor t3,funcionario t4 where t1.cod_produto=t2.cod_produto and t1.num_fornecedor=t3.num_fornecedor "
+ “and t1.num_funcionario=t4.num_funcionario and t1.cod_produto = ?”);

		stmt.setLong(1, codProduto);
		stmt.executeQuery();
		ResultSet rs = stmt.getResultSet();

		while(rs.next()) {
			
			HistoricoProduto historicoProduto = new HistoricoProduto();
			
			historicoProduto.setCodProduto(rs.getLong("cod_produto"));
			historicoProduto.setNumFornecedor(rs.getInt("num_fornecedor"));
			historicoProduto.setNumFuncionario(rs.getInt("num_funcionario"));
			historicoProduto.setDataEntrada(rs.getDate("dta_cadastro"));
			historicoProduto.setValor(rs.getDouble("valor"));
			historicoProduto.setQuantidade(rs.getInt("quantidade_entrada"));
			historicoProduto.setNomProduto(rs.getString("nom_produto"));
			historicoProduto.setNomFornecedor(rs.getString("nom_fornecedor"));
			historicoProduto.setNomFuncionario(rs.getString("nom_funcionario"));
					
		} 
		rs.close();
		stmt.close();
		
		return lista;
		
	} catch (SQLException e) {

		throw new RuntimeException(e);

	}

}[/code]

[code]<%@ page language=“java” contentType=“text/html; charset=ISO-8859-1”
pageEncoding=“ISO-8859-1”%>
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>

Resultado Histórico Produto Resultado Histórico Produto

	</tr>
	<tr>
		<td><label>Número Funcionário:</label></td>
		<td><input name="numFuncionario" type="text" maxlength="4"
			size="10" value="${listaResultato.numFuncionario}" /></td>
	</tr>
	<tr>
		<td><label>Nome Funcionário:</label></td>
		<td><input name="nome" type="text" maxlength="70" size="56"
			value="${listaResultato.nomFuncionario}" /></td>
	</tr>
	<tr>
		<td><label>Número do Fornecedor:</label></td>
		<td><input type="text" maxlength="8" name="numFornecedor"
			size="20" value="${listaResultato.numFornecedor" />
	</tr>
	<tr>
		<td><label>Nome do Fornecedor:</label></td>
		<td><input type="text" maxlength="70" name="nomeFornecedor"
			size="50" value="${listaResultato.nomFornecedor}" /></td>
	</tr>
Código Produto:
Nome Produto:
Data Cadastro: Valor: Quantidade:
[/code]

Então, o funcionamento é simples, vou ter uma página que irei colocar o código do produto, e depois enviarei esse código para o banco e ele me retornará uma lista e esta lista, eu quero imprimir, entretanto, quando eu tento imprimir aparece o seguinte erro…

[code]exception

org.apache.jasper.JasperException: An exception occurred processing JSP page /ResultadoHistoricoProduto.jsp at line 32

29:
30: Resultado Histórico Produto

31:

32: <c:forEach var=“listaResultato” items="${entradaProdutoDAO.pesquisaEntrada}">
33:


34:
35:

Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:363)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:306)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

root cause

org.apache.jasper.el.JspPropertyNotFoundException: /ResultadoHistoricoProduto.jsp(32,0) ‘${entradaProdutoDAO.pesquisaEntrada}’ Property ‘pesquisaEntrada’ not found on type DB.EntradaProdutoDAO
org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:109)
org.apache.jsp.ResultadoHistoricoProduto_jsp._jspx_meth_c_005fforEach_005f0(ResultadoHistoricoProduto_jsp.java:123)
org.apache.jsp.ResultadoHistoricoProduto_jsp._jspService(ResultadoHistoricoProduto_jsp.java:93)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:68)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:387)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:363)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:306)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

[/code]

Bom, pelo o que eu entendi, não está sendo encontrada o método “pesquisaEntrada”, mas como vocês podem ver…ele existe. =]
Alguém consegue me explicar o erro?
Abraço.

Código Produto:

resumidamente, quando você faz items="${entradaProdutoDAO.pesquisaEntrada}", o JSTL procura pelo método de acesso (get) do atributo pesquisaEntrada da classe EntradaProdutoDAO, ou seja, EntradaProdutoDAO.getPesquisaEntrada().

altere o nome do método para getPesquisaEntrada().

entendeu?

o método também recebe um parâmetro, pesquisaEntrada(long codProduto), mas essa vou deixar para você pesquisar.

Opa! Obrigado por responder, entretanto, havia feito isso, e deu o mesmo erro.
Bom, tentei mudar e ficou assim…

Primeiro a minha servlet…

package Servlets;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import Classes.EntradaProduto;
import Classes.Produto;
import DB.EntradaProdutoDAO;
import DB.ProdutoDAO;

public class HistoricoProdutoServlet extends HttpServlet{
	
	Produto produto = new Produto();
	ProdutoDAO produtoDAO = new ProdutoDAO();
	EntradaProdutoDAO entradaProdutoDAO = new EntradaProdutoDAO();
	EntradaProduto entradaProduto =new EntradaProduto();
	
	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		String codProduto = request.getParameter("codigoProduto");
		String nomProduto = request.getParameter("nomeProduto");
		String botao = request.getParameter("botao");
		String tipoPesquisa = request.getParameter("tipoPesquisa");
	
		if(botao.equals("Histórico")){

			response.sendRedirect("ResultadoHistoricoProduto.jsp");
			
		}else if(botao.equals("Pesquisar")){
			
			if(tipoPesquisa.equals("cod")){
				
				Produto resultadoPesquisaProduto = produtoDAO.pesquisarProduto(Long.parseLong(codProduto));
				
				if(resultadoPesquisaProduto!=null){
					
					request.setAttribute("codigoProduto", resultadoPesquisaProduto.getCodProduto());
					request.setAttribute("nomeProduto", resultadoPesquisaProduto.getNomeProduto());
					
					RequestDispatcher rd = request.getRequestDispatcher("/HistoricoProduto.jsp");
					rd.forward(request,response);
					
				}else{
					
					request.setAttribute("mensagem", "O número do produto informado não consta no banco de dados.");
					request.setAttribute("botao", "Voltar Histórico");
					
					RequestDispatcher rd = request.getRequestDispatcher("/Resposta.jsp");
					rd.forward(request,response);
					
				}
				
			}else if(tipoPesquisa.equals("nom")){
				
				Produto resultadoPesquisaProduto = produtoDAO.pesquisarNomeProduto(nomProduto);
				
				if(resultadoPesquisaProduto!=null){
					
					request.setAttribute("codigoProduto", resultadoPesquisaProduto.getCodProduto());
					request.setAttribute("nomeProduto", resultadoPesquisaProduto.getNomeProduto());
					
					RequestDispatcher rd = request.getRequestDispatcher("/HistoricoProduto.jsp");
					rd.forward(request,response);
					
				}else{
					
					request.setAttribute("mensagem", "O nome do produto informado não consta no banco de dados.");
					request.setAttribute("botao", "Voltar Histórico");
					
					RequestDispatcher rd = request.getRequestDispatcher("/Resposta.jsp");
					rd.forward(request,response);
					
				}
				
			}
			
		}
		
	}
	
}

o trecho do banco com o “get”

[code]
public List getPesquisaEntrada(long codProduto) {
List lista = new ArrayList();
try {
PreparedStatement stmt = con
.prepareStatement(“select t1.cod_produto,t1.num_fornecedor,t1.num_funcionario,t1.dta_cadastro,”
+ "t1.valor,t1.quantidade_entrada,t2.nom_produto,t3.nom_fornecedor,t4.nom_funcionario from entrada_produto t1,produto "
+ "t2,fornecedor t3,funcionario t4 where t1.cod_produto=t2.cod_produto and t1.num_fornecedor=t3.num_fornecedor "
+ “and t1.num_funcionario=t4.num_funcionario and t1.cod_produto = ?”);

		stmt.setLong(1, codProduto);
		stmt.executeQuery();
		ResultSet rs = stmt.getResultSet();

		while(rs.next()) {
			
			HistoricoProduto historicoProduto = new HistoricoProduto();
			
			historicoProduto.setCodProduto(rs.getLong("cod_produto"));
			historicoProduto.setNumFornecedor(rs.getInt("num_fornecedor"));
			historicoProduto.setNumFuncionario(rs.getInt("num_funcionario"));
			historicoProduto.setDataEntrada(rs.getDate("dta_cadastro"));
			historicoProduto.setValor(rs.getDouble("valor"));
			historicoProduto.setQuantidade(rs.getInt("quantidade_entrada"));
			historicoProduto.setNomProduto(rs.getString("nom_produto"));
			historicoProduto.setNomFornecedor(rs.getString("nom_fornecedor"));
			historicoProduto.setNomFuncionario(rs.getString("nom_funcionario"));
					
		} 
		rs.close();
		stmt.close();
		
		return lista;
		
	} catch (SQLException e) {

		throw new RuntimeException(e);

	}

}[/code]

e por último a minha jstl.

[code]<%@ page language=“java” contentType=“text/html; charset=ISO-8859-1”
pageEncoding=“ISO-8859-1”%>
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>

Resultado Histórico Produto Resultado Histórico Produto

	</tr>
	<tr>
		<td><label>Número Funcionário:</label></td>
		<td><input name="numFuncionario" type="text" maxlength="4"
			size="10" value="${listaResultato.numFuncionario}" /></td>
	</tr>
	<tr>
		<td><label>Nome Funcionário:</label></td>
		<td><input name="nome" type="text" maxlength="70" size="56"
			value="${listaResultato.nomFuncionario}" /></td>
	</tr>
	<tr>
		<td><label>Número do Fornecedor:</label></td>
		<td><input type="text" maxlength="8" name="numFornecedor"
			size="20" value="${listaResultato.numFornecedor" />
	</tr>
	<tr>
		<td><label>Nome do Fornecedor:</label></td>
		<td><input type="text" maxlength="70" name="nomeFornecedor"
			size="50" value="${listaResultato.nomFornecedor}" /></td>
	</tr>
Código Produto:
Nome Produto:
Data Cadastro: Valor: Quantidade:
[/code]

Então, o que eu quis fazer, era mandar o “codigo do produto” para a beans e depois capturar o valor direto na jstl(havia feito de outra forma, porém, não deu certo).
O valor capturado é o parâmetro que o “getPesquisaEntrada” necessita.
Entretanto, não se dessa forma é possível. É?
Aonde eu ando pecando?
Abraço.

acho que você não pesquisou o que eu disse para você pesquisar.

http://java.itags.org/java-web-tier-apis/6096

Opa, foi mal, é que acabei me enrrolando.
Entretanto, consegui resolver o meu problema aqui…Bom, pelo menos uma parte dele. =]

Agora surgiu outro…Veja só.

Eu queria imprimir o histórico de “entrada produto” e consegui dessa forma…

<body>
<form action="entradaProduto" id="form1" name="form1" method="post">
<fieldset><legend>Resultado Histórico Produto</legend> <br>
<br>
<h3>Histórico Entrada Produto</h3>
<table width="100%" cellpadding="5" cellspacing="2">
	<c:forEach var="listaResultadoEntrada" items="${listaHistoricoEntrada}">
		<tr><td><label>-------------------</label></td></tr>
		<tr>
			<td><label>Código Produto:</label></td>
			<td>${listaResultadoEntrada.codProduto}</td>
			<td><label>Nome Produto:</label></td>
			<td>${listaResultadoEntrada.nomProduto}</td>

		</tr>
		<tr>
			<td><label>Número Funcionário:</label></td>
			<td>${listaResultadoEntrada.numFuncionario}</td>
			<td><label>Nome Funcionário:</label></td>
			<td>${listaResultadoEntrada.nomFuncionario}</td>
		</tr>	
		 <tr>
			<td><label>Número do Fornecedor:</label></td>
			<td>${listaResultadoEntrada.numFornecedor}</td>
			<td><label>Nome do Fornecedor:</label></td>
			<td>${listaResultadoEntrada.nomFornecedor}</td>
		</tr>
		<tr>
			<td><label>Data Cadastro:</label></td>
			<td>${listaResultadoEntrada.dataEntrada}</td>
			<td><label>Valor:</label></td>
			<td>${listaResultadoEntrada.valor}</td>
			<td><label>Quantidade:</label></td>
			<td>${listaResultadoEntrada.quantidade}</td>
		</tr>	
	</c:forEach>
</table>
<h3>Histórico Saída Produto</h3>
<table width="100%" cellpadding="5" cellspacing="2">
	<c:forEach var="listaResultadoSaida" items="${listaHistoricoSaida}">
		<tr><td><label>-------------------</label></td></tr>
		<tr>
			<td><label>Código Produto:</label></td>
			<td>${listaResultadoSaida.codProduto}</td>
			<td><label>Nome Produto:</label></td>
			<td>${listaResultadoSaida.nomProduto}</td>
		</tr>
		<tr>
			<td><label>Número Funcionário:</label></td>
			<td>${listaResultadoSaida.numFuncionario}</td>
			<td><label>Nome Funcionário:</label></td>
			<td>${listaResultatoSaida.nomFuncionario}</td>
		</tr>
		<tr>
			<td><label>Data Saida:</label></td>
			<td>${listaResultadoSaida.dataSaida}</td>
			<td><label>Quantidade Saida:</label></td>
			<td>${listaResultadoSaida.quantidadeSaida}</td>
		</tr>	
	</c:forEach>
</table>
</fieldset>
</form>
</body>

Minha servlet “HistóricoProduto”

ProdutoDAO produtoDAO = new ProdutoDAO();
			EntradaProdutoDAO entradaProdutoDAO = new EntradaProdutoDAO();
			
			request.setAttribute("listaHistoricoEntrada", entradaProdutoDAO.getPesquisaEntrada(new Long(codProduto)));
			request.setAttribute("listaHistoricoSaida", saidaProdutoDAO.getPesquisaSaida(new Long(codProduto)));
			
			RequestDispatcher rd = request.getRequestDispatcher("ResultadoHistoricoProduto.jsp");
			rd.forward(request,response);
			
			produtoDAO.fecharConexao();
			entradaProdutoDAO.fecharConexao();

Então, deu certinho para imprimir, mas, agora eu preciso imprimir o resto do histórico, que seria a saída do produto, e fiz o mesmo que fiz em entrada.
Porém, fui infeliz dessa vez, pois ele não me retornou o “nomFuncionario”,“dataSaida” e “quantidadeSaida”.
Olhei o código aqui, porém, ainda não descobri o erro, o que em teoria, esse for seria idêntico ao anterior.

Segue o trecho da classe DAO.

public List<HistoricoProduto> getPesquisaSaida(long codProduto) {
		List<HistoricoProduto> lista = new ArrayList<HistoricoProduto>();
		try {
			PreparedStatement stmt = con.prepareStatement("select t1.cod_produto, t1.num_funcionario, t1.data_saida, t1.quantidade_saida, "+
					"t2.nom_produto, t3.nom_funcionario from saida_produto t1, produto t2, funcionario t3 where t1.cod_produto=t2.cod_produto and "+
					"t1.num_funcionario=t3.num_funcionario and t1.cod_produto = ?");

			stmt.setLong(1, codProduto);
			stmt.executeQuery();
			ResultSet rs = stmt.getResultSet();

			while(rs.next()) {
				
				HistoricoProduto historicoProduto1 = new HistoricoProduto();
				
				historicoProduto1.setCodProduto(rs.getLong("cod_produto"));
				historicoProduto1.setNumFuncionario(rs.getInt("num_funcionario"));
				historicoProduto1.setDataEntrada(conversao.getDateUser(String.valueOf(rs.getDate("data_saida"))));
				historicoProduto1.setQuantidade(rs.getInt("quantidade_saida"));
				historicoProduto1.setNomProduto(rs.getString("nom_produto"));
				historicoProduto1.setNomFuncionario(rs.getString("nom_funcionario"));
					
				lista.add(historicoProduto1);
				
				System.out.println(historicoProduto1.getDataEntrada());
				System.out.println(historicoProduto1.getQuantidade());
			} 
			rs.close();
			stmt.close();
			
			return lista;
			
		} catch (SQLException e) {

			throw new RuntimeException(e);

		}

	}

Valeu. =]

você vê alguma mensagem de erro?

onde você declarou a instância de saidaProdutoDAO?

[code]ProdutoDAO produtoDAO = new ProdutoDAO();
EntradaProdutoDAO entradaProdutoDAO = new EntradaProdutoDAO();

request.setAttribute(“listaHistoricoEntrada”, entradaProdutoDAO.getPesquisaEntrada(new Long(codProduto)));
request.setAttribute(“listaHistoricoSaida”, saidaProdutoDAO.getPesquisaSaida(new Long(codProduto))); // esta linha aqui

RequestDispatcher rd = request.getRequestDispatcher(“ResultadoHistoricoProduto.jsp”);
rd.forward(request,response);

produtoDAO.fecharConexao();
entradaProdutoDAO.fecharConexao();[/code]

Opa, valeu meu camarada!
Havia resolvido o problema, mas estava meio enrrolado e não deu para agradecer pela atenção antes! =]
Eu havia instanciado a classe na linha de cima, entretando, por falha minha não postei a linha.
Bom, resumindo, o erro estava na minha DAO quando eu enviava o resultado da minha classe DAO para a classe beans.
Estava enviando para o atributo errado. :roll:
Vou dar uma lida no tutorial que me passou.
Um grande abraço e mais uma vez obrigado.
Até.