Consulta não retorna nada nem dá erro

2 respostas
F

Bom, estou fazendo uma app no Eclipse com Struts2 e Hibernate, já consigo inserir,editar e remover, mas não consigo listar os items num .jsp, só aparece o cabeçalho da página e o titulo, mas os dados não:

Meu HibernateUtil:

public class HibernateUtil {
	
	private static SessionFactory factory;
	
	static{
		AnnotationConfiguration cfg = new AnnotationConfiguration();
		cfg.addAnnotatedClass(Produto.class);
		factory = cfg.buildSessionFactory();
	}
	
	public Session getSession(){
		return factory.openSession();
	}

}

Meu Action:

public class ListarProdutosAction {

    private List<Produto> produtos;
    Session session = new HibernateUtil().getSession();

    @Action(value="listaProdutos",results={
        @Result(name="ok",location="/lista_produtos.jsp")
    })

    public String execute(){
        produtos = new ProdutoDAO(session).listar();
        return "ok";
    }
}

Meu DAO:

public class ProdutoDAO {
	
	private Session session;
	
	public ProdutoDAO (Session session){
		this.session = session;
	}
	
	public void salva(Produto p){
		this.session.save(p);
	}
	
	public void remove(Produto p){
		this.session.delete(p);
	}
	
	public Produto procura(Long id){
		return (Produto)this.session.load(Produto.class, id);
	}
	
	public void atualiza(Produto p){
		this.session.update(p);
	}
	
	@SuppressWarnings("unchecked")
    public List<Produto> listar(){
        Query query = (Query) this.session.createSQLQuery("select * from Produto");
        List <Produto> lista = query.list();
        return lista;
		
   }

}

Minha página jsp:

<html>
    <head>
        <title>Listagem de Produtos</title>
    </head>
    <body>
        <h1>Lista de Produtos</h1>
        <table>
            <tr>
                <th>Id</th>
                <th>Descrição</th>
                <th>Preço(R$)</th>
            </tr>
            <c:forEach items="${produtos}" var="produto">
                <tr>
                    <td>${produto.id}</td>
                    <td>${produto.descricao}</td>
                    <td>${produto.preco}</td>
                </tr>
            </c:forEach>
        </table>
    </body>
</html>

Alguém poderia me dizer onde estou errando, por favor.

Obrigado.

2 Respostas

danieldomingues86

Ola,

Nunca trabalhei com o Struts 2, mas pelo que vejo sua classe action nao deveria estender ActionSupport?

Um Abraco.

marcelo.bellissimo

Evite usar JSTL com o Struts2… comigo sempre deu problema… substitua o seu c:forEach pelo s:iterator do Struts2… um exemplo dele aqui:
http://www.roseindia.net/struts/struts2/struts2controltags/iterator-tag.shtml

Criado 16 de janeiro de 2010
Ultima resposta 16 de jan. de 2010
Respostas 2
Participantes 3