Olá a todos.
Iniciei a pouco tempo o estudo sobre desenvolvimento web, e estou com algumas dúvidas referentes à paginação.
Criei uma classe Dao generico, no qual coloquei todos as minhas ações, inclusive o método lista(), que lista os valores e define até quando eles devem ser mostrados.
Também criei um jsp lista-fornecedor, no qual ele mostra os fornecedores do banco de dados.
Minha dúvida é, como faço, para que ao exibir os dados, se houver mais de 10 fornecedores, ele crie uma paginação, com links para exibir os próximos fornecedores.
Abaixo vão os códigos do dao e do jsp
Dao generico
package br.com.cpmbraxis.dao;
import java.util.List;
import org.apache.log4j.Logger;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
public class Dao<T> {
private Logger logger = Logger.getLogger(Dao.class);
private Class<T> persistentClass;
private Session session;
public Dao(Session session,Class<T> persistentClass){
this.session = session;
this.persistentClass = persistentClass;
}
@SuppressWarnings("unchecked")
public T procurar(Long id){
logger.info("lendo "+persistentClass+" com id "+id);
return (T)session.load(persistentClass, id);
}
public void salvar(T t){
logger.info("Salvando na classe "+t);
session.save(t);
}
public void apagar(T t){
logger.info("Deletando dado da classe "+t);
session.delete(t);
}
public void alterar(T t){
logger.info("Alterando o dado da classe "+t);
session.merge(t);
}
//método que mostra a lista e define o valor máximo de itens a serem mostrados.
@SuppressWarnings("unchecked")
public List<T> lista(){
logger.info("listando todos os dados.");
Criteria c = this.session.createCriteria(persistentClass);
c.setFirstResult(0)
.setMaxResults(10);
return c.list();
}
public List<T> listaPorId(Long id){
logger.info("listando...");
Criteria c = this.session.createCriteria(persistentClass);
c.add(Restrictions.eq("fornecedor.id", id));
return c.list();
}
}
lista-fornecedor.jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix = "c"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<c:choose>
<c:when test="${empty usuario}">
<c:redirect url="index.jsp">
<c:param name="retorno" value="sessaoexpirou"/>
</c:redirect>
</c:when>
<c:otherwise>
Olá ${usuario.login}
</c:otherwise>
</c:choose>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Projeto CPMBRAXIS</title>
</head>
<body bgcolor="#C0FFFF">
<center><b>Projeto de Gerenciamento de Contas a Pagar/Fornecedor</b></center><br>
<center><b>Fornecedor</b></center>
<a href="novo-fornecedor.jsp">Cadastrar</a><br>
<table align="center" width="80%">
<tr>
<td><b>Nome</b></td>
<td width="25%"><b>Descrição</b></td>
<td width="25%"><b>Endereço</b></td>
<td width="12%"> </td>
<td width="12%"> </td>
</tr>
<c:forEach var="fornecedor" items="${fornecedores}">
<tr>
<td> <a href="listaconta.do?fornecedor.id=${fornecedor.id}">${fornecedor.nome}</a></td>
<td> ${fornecedor.descricao}</td>
<td> ${fornecedor.endereco}</td>
<td> <a href="mostrafornecedor.do?fornecedor.id=${fornecedor.id}">Alterar</a></td>
<td> <a href="removefornecedor.do?fornecedor.id=${fornecedor.id}" onclick="return confirm('Você gostaria realmente de apaga-lo?')">Remover</a></td>
</tr>
</c:forEach>
</table>
</body>
</html>
Desde já agradeço a ajuda de todos.