Paginación en JSP

ruben_
29 de Septiembre del 2005
Hola a todos:
Tengo el clásico JSP que saca por pantalla un ResultSet de muchos registros y me gustaría sacarlos de forma paginada.
¿Alguien me puede decir una forma sencilla de hacerlo o poner un ejemplo sencillo?.
Muchas gracias,
Rubén.

aloneibar
29 de Septiembre del 2005
Los pasas a un Vector(p.e.) de vectores. Por cada una de las filas Vector1 se ponen todos los elementos del Vector2 columnas. Ponemos el caso de que se van a visualizar 10 elementos cada vez.
La primera vez la variable indice es nulo por lo que se empezará desde el principio. Por defecto el limite será contador +10, pero claro está si quedan menos de 10 elementos por visualizar será hasta el tamaño del vector1. El action del formulario será la misma página web.(contador.jsp)

contado.jsp

<HTML>
<HEAD>
<TITLE> Tabla contador </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<%
Vector vTabla = (Vector) sesion.getAtributte("tabla");
int contador = session.getAttribute("contador");
if (contador == null || contador.equals("")) {
contador = 0;
}
int limite = contador + 10;
if (vTabla.size() < (contador +10) {
limite = vTabla.size();
}
%>
<script>
jsLimite = "<%=limite%>";
function adelante() {
if (document.formTabla.contador.value >= jsLimite) {
alert("No hay más datos")
} else {
document.formTabla.contador.value = document.formTabla.contador.value + 10;
}
document.formTabla.submit();
}
function atras() {
if (document.formTabla.contador.value <= 0) {
alert("Estamos al principio")
} else {
document.formTabla.contador.value = document.formTabla.contador.value - 10;
}
document.formTabla.submit();
}
</script>
</HEAD>

<BODY>
<form action="/tablaContador.jsp" name="formTabla">
<table border="1">
<% for(int i=contador; i<limite)%>
<tr><td>hola1</td><td>hola1</td></tr>
<tr><td>hola1</td><td>hola1</td></tr>
</table>
<input type="button" value="Atrás" onclick="atras();" >
<input type="button" value="Adelante" onclick="adelante();"
<input type="hidden" name="contador">
</BODY>
</HTML>


aloneibar
29 de Septiembre del 2005
La parte del table mejorada. No está probado. Espero que te sirva...

<table border="1">
<% for(int i=contador; i<limite)%>
<tr>
<% Vector vFila = (Vector) vTabla.elementAt(i)
for (int j=0; j< vFila.size(); j++) {
String dato = (String)vFila.elementAt(j);
}
document.write("<td>"+dato+"</td>");
%>
</tr>
<%}%>
</table>