Boa tarde colegas.
Estou estudando a apostila e não estou conseguindo listar os registros do banco de dados na minha página jsp.
Seguem os itens que estou fazendo (capítulo 7 página 45).
- Crie o arquivo lista.jsp na pasta /WEB-INF/jsp/produtos.
| Nome |
Descrição |
Preço |
| ${produto.nome } |
${produto.descricao } |
${produto.preco } |
- Acesse a URI que executa o método lista: http://localhost:8080/goodbuy/produtos/lista.
Quando acesso a página acima, apenas retorna o header sem os valores dos campos. No console do eclipse aparece o seguinte:
Hibernate:
select
this_.id as id0_0_,
this_.descricao as descricao0_0_,
this_.nome as nome0_0_,
this_.preco as preco0_0_
from
Produto this_
Antes que me perguntem se existem dados na tabela, já adianto que sim, criei o banco fj28, tabela produto e todos os campos no mysql e populei os registros.
Por favor, o que pode estar errado ?
Boa tarde!
Você pode postar seu ProdutosController? Uma dica: no método lista da classe ProdutosController, coloque um System.err.println com a lista de itens que você está retornando. Com esse tipo de ‘debug’ (ou log) é possível saber se existem dados vindo do banco (veja que não falei pra você ver se tem dados no banco, só pedi pra mostrar a lista que vem do banco).
Obrigado pela atenção Andre. Segue minha classe:
package br.com.caelum.goodbuy.controller;
import java.util.List;
import br.com.caelum.goodbuy.dao.ProdutoDao;
import br.com.caelum.goodbuy.modelo.Produto;
import br.com.caelum.vraptor.Resource;
@Resource
public class ProdutosController {
private final ProdutoDao dao;
public ProdutosController(ProdutoDao dao){
this.dao = dao;
}
public List<Produto> lista(){
List<Produto> produtos = dao.listaTudo();
System.err.println(produtos);
return produtos;
}
}
Inclui o comando System.err.println e o console exibiu o seguinte:
Hibernate:
select
this_.id as id0_0_,
this_.descricao as descricao0_0_,
this_.nome as nome0_0_,
this_.preco as preco0_0_
from
Produto this_
[br.com.caelum.goodbuy.modelo.Produto@8c858a]
uma dúvida: vc está com a declaração da taglib c no arquivo? posta ela aqui por favor?
Sim, segue declaração:
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
tanto é que quando digito a tag <c:forEach> o eclipse consegue reconhecer e auto-completar. Será que está faltando algum jar ?
No mesmo projeto tenho uma classe que inclui os dados na tabela pelo hibernate normalmente, sem problema nenhum.
se vc manda ver o fonte da página gerada, aparecem os dados lá?
segue fonte da página gerada
<?xml version="1.0" encoding="ISO-8859-1" ?>
lista
<th>Nome</th>
<th>Descrição</th>
<th>Preço</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
faz
System.err.println("##################" + produtos);
e ve se o “#######” aparece mais de uma vez na mesma requisição.
PS: coloque seu código entre e
segue minha página lista.jsp
<?xml version="1.0" encoding="ISO-8859-1" ?>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>lista</title>
</head>
<body>
<table>
<thead>
<tr>
<th>Nome</th>
<th>Descricao</th>
<th>Preco</th>
</tr>
</thead>
<tbody>
<c:forEach items="${produto.List }" var="produto">
<tr>
<td>${produto.nome }</td>
<td>${produto.descricao }</td>
<td>${produto.preco }</td>
</tr>
</c:forEach>
</tbody>
</table>
</body>
</html>
Onde vc quer que eu coloque o System.err.println ?
<c:forEach items="${produto.List }" var="produto">
tá errado!
o certo é:
<c:forEach items="${produtoList }" var="produto">
tinha um . a mais
Nossa Lucas, que vacilo meu !!! Nem tinha reparado nisso, coisa de principiante mesmo rsrsrs !!!
Hj não consigo mais testar mas amanhã retorno p/ vc. Muito obrigado.
Lucas, testei novamente com a alteração que vc me passou e funcionou !!! Vou continuar estudando a apostila e caso surjam mais dúvidas espero tirar com vc, estou gostando bastante do vraptor, obrigado.