Paginaçao em JSP

11 respostas
S

Saudações, pessoal, estou com uma dúvida simples, talvez até dê vergonha de perguntar, mas estou aqui porque quero aprender.
Bom, fiz um código que recebe uma lista e através de uma String SQL específica controla o fluxo de dados de um resultset, nada mais que uma pressuposta "paginação" que não saiu exatamente com o planejado.
consegui fazer o código, não foi difícil, mas quero usar isso na visão do meu projeto.
Como fazer para que quando clicar sobre a palavra "próximo", por exemplo, venho a incrementar este índice dentro do JSP???

Abaixo é meu resultSet, que é responsável por trazer uma lista de dados ordenado por nome:

Não sei se esta correto, mas basicamente funciona da seguinte forma LIMITE 4, 40;
Onde 4 é: A PARTIR DE ONDE A LISTA COMEÇA
e 40: até onde a lista vai.
A dúvida é: COMO INCREMENTAR ISSO A PARTIR DE UM A HREF?
Como obter estes parâmetros, enviá-los e incrementá-los no JSP?

Desde Já agradeço muito.

int incremento;
	int limite = incremento;
	int index = limite + 30;
	public List<Empresa> getLista() throws SQLException {
		PreparedStatement stmt = this.connection
				.prepareStatement("SELECT * FROM empresa order by nome LIMIT "
						+ limite + ", " + index);

		ResultSet rs = stmt.executeQuery();
		List<Empresa> empresas = new ArrayList<Empresa>();
		while (rs.next()) {
			Empresa empresa = new Empresa();
			empresa.setCod_empresa(rs.getLong("cod_empresa"));
			empresa.setPrioridade(rs.getLong("prioridade"));
			empresa.setNome(rs.getString("nome"));
			empresa.setEndereco(rs.getString("endereco"));
			empresa.setTelefone(rs.getString("telefone"));
			empresa.setEmail(rs.getString("email"));
			empresa.setSite(rs.getString("site"));
			empresa.setDescricao(rs.getString("Descricao"));
			empresa.setLogo(rs.getString("logo"));
			empresas.add(empresa);
		}
		rs.close();
		stmt.close();
		stmt.close();
		return empresas;
	}
Minha página JSP:
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!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=UTF-8">

<title>Luziânia OnLine - Sistema de informação Comercial</title>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<jsp:useBean id="dao" class="br.com.lza.dao.EmpresaDAO" />
<link type="text/css" rel="stylesheet" href="estilo/estiloadm.css" />
<link type="text/css" rel="stylesheet" href="menu/chromestyle.css" />
<script type="text/javascript" src="menu/chrome.js"></script>

</head>
<body>

	<%
		attribute name = incremento;
	%>

	<P>${incremento}</P>
	&lt;div id="geral"&gt;
		&lt;div id="escopo"&gt;

			&lt;div id="cabecalho"&gt;
				&lt;h3&gt;Luziânia OnLine - Sistema de informação Comercial&lt;/h3&gt;
			&lt;/div&gt;
			&lt;div id="tipopag"&gt;
				&lt;h3&gt;Área Administrativa&lt;/h3&gt;
			&lt;/div&gt;

			&lt;div class="chromestyle" id="chromemenu"&gt;

				<ul>
					<li><a >Home</a></li>
					<li><a >Cadastrar Registros</a></li>
					<li><a >Consultar Registros</a></li>
					<li><a >Página Principal</a></li>
					<li><a  rel="dropmenu1">Contatos</a></li>
				</ul>
			&lt;/div&gt;


			&lt;!--1nd drop down menu --&gt;
	&lt;div id="dropmenu1" class="dropmenudiv" style="width: 100px;"&gt;
				<a >Consultar mensagens</a>
				&lt;script type="text/javascript"&gt;
					cssdropdown.startchrome("chromemenu");
				&lt;/script&gt;
			&lt;/div&gt;


			&lt;div id="listaempresas"&gt;
				&lt;div id="titutotablista"&gt;
					&lt;table&gt;
						&lt;tr&gt;
							&lt;td width=500px&gt;Empresas&lt;/td&gt;
							&lt;td id="titacao" width=300px&gt;Ação&lt;/td&gt;
						&lt;/tr&gt;
					&lt;/table&gt;
				&lt;/div&gt;
				&lt;c:forEach var="empresa" items="${dao.lista}"
					varStatus="cod_empresa"&gt;

					&lt;table width="100%" cellpadding="3" cellspacing="0"&gt;
						&lt;tr&gt;
							&lt;td id="nomes" width=600px&gt;${empresa.nome}&lt;/td&gt;

							&lt;td id="acao" width=200px&gt;<a
								>Detalhar</a>
								<a
								>Alterar</a>
								<a
								>Remover</a>
							&lt;/td&gt;
						&lt;/tr&gt;
					&lt;/table&gt;
				&lt;/c:forEach&gt;
			&lt;/div&gt;
			<a >SEGUINTE</a>");
			&lt;div id="rodape"&gt;
				<p>Todos os direitos reservados</p>
			&lt;/div&gt;
		&lt;/div&gt;
	&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;

11 Respostas

Hebert_Coelho

Vc vai ter que salvar um campo hidden em sua JSP que contenha o limite. Quando a pessoa clicar no next, esse valor será enviado, você soma + 30 e refaz a pesquisa. [=

Jair_Rillo_Junior

smnj, é apenas estudo ou você quer fazer uma paginação em um projeto real?
Se for para estudos, pode usar o esquema de campo hidden mesmo. Caso use o Hibernate (que não é o seu exemplo), ele tem métodos que facilitam muito fazer query com limites.

Agora caso queira algo para projeto real, eu aconselho dar um olhada no projeto displaytag http://www.displaytag.org/1.2/

S

Olá Jair, é mesmo um projeto real…

S

Jair, pode me ajudar com este “input”?
porque não consegui implementar.

ssh

eu já tentei rodar o displaytag em uma aplicação 2 vezes e nunca consegui.

é necessário modificar o cabeçalho html, adicionando uma variavel tag, como por exemplo no primefaces?

pois instalei todas as bibliotecas dependentes, e tudo mais. e não consegui fazer rodar.

Jair_Rillo_Junior

http://www.displaytag.org/1.2/tut_basic.html o exemplo mais básico para começar. Depois que fizer esse, pode continuar lendo a documentação do displaytag.

ssh

nem o mais básico consegui, quando tiver tempo novamente vo tentar rodar dinovo.

mas se bem que estou aprendendo JSF e PrimeFaces, acho que não vai ser mais necessário. rs

Jair_Rillo_Junior

Com JSF você pode usar o dataTable

ssh

isso, e ainda tem opção de paginação com o primefaces.

Hebert_Coelho

Só tem que ficar esperto que a paginação do primefaces manda moçada para sessão! Se vacilar, a memória do pc lota.

Qual opção você irá adotar?

S

Estava pensando em, pelo menos por hora, já que queria algo simples mesmo usar JDBC por enquanto, mas pretendo migrar o projeto para JSF e Hibernate o mais breve possível, sabendo que estes têm opções muito mais simples de resolver este problema, até então, só quero algo para ser apresentado sem muito trabalho.

Criado 8 de novembro de 2011
Ultima resposta 8 de nov. de 2011
Respostas 11
Participantes 4