La paginación en paginas web siempre fue un dolor de cabeza, pero RichFaces nos brinda un componente que nos permite hacerlo sin esfuerzo, ya no necesitamos LIMITS ni nada por el estilo en nuestro SQL, si usas Hibernate no tendras que paginar con funciones, RichFaces hace eso por ti, el componente rich:datascroller solo se agrega a cualquier rich:dataTable y listo, asi de facil.
public class echoBean { private String name; private Integer count; private int scrollerPage; public List listaTabla(){ List lista = new ArrayList(); lista.add("sss"); lista.add("sss"); lista.add("sss"); return lista; } public Integer getCount() { return count; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getScrollerPage() { return scrollerPage; } public void setScrollerPage(int scrollerPage) { this.scrollerPage = scrollerPage; } } <rich:dataTable id="testpList" value="#{echoBean.listaTabla}" var="grupo" width="100%" rows="15"> <f:facet name="header"> <rich:columnGroup> <rich:column> <h:outputText value="test" /> </rich:column> <rich:column> <h:outputText value="Nombre test" /> </rich:column> </rich:columnGroup> </f:facet> <rich:column> h:outputText value="#{grupo.valido}" /> </rich:column> <rich:column> <h:outputText value=" #{grupo.test}" styleClass="label" /> </rich:column> <f:facet name="footer"> <rich:datascroller align="left" for="testpList" maxPages="20" page="#{echoBean.scrollerPage}" id="down" reRender="up" /> </f:facet> </rich:dataTable>
- for: Debes de asignar este paginador a una tabla, aqui pondrias el ID de el DataTable
- maxPages: Maximo del paginador, osea, si quieres que te aparezcan solo 20 paginas, solo sadran los botones de 1,2,3,4 …20, y asi.. cuando avances a la pagina 6, te aparecera del 6 al 26 y asi consecutivamente.
- page: En un bean tienes que manejar la paginacion, osea que el bean que tambien maneja tu dataTable, debes agregarle la propiedad “scrollerPage”, puede ser cualquier nombre, pero debe ser Integer, con su Get y Set, no necesariamente debe ser el mismo Bean.
- reRender: Esta propiedad esta presente en todos los componentes, su función es actualizar diferentes componentes cuando paginas, en nuestro caso seria el dataTable, depende de lo que quieras hacer y tal vez te interesa renderizar otros componentes simultaneamente.


Zacjack
on May 19th, 2009
@ 21:45:
el ID de tu tabla en este ejemplo es:
- testpList
en for del datascroller pones
- groupList
Jota
on May 20th, 2009
@ 8:52:
cierto, tienes razón, corregido.
Marcelo
on May 28th, 2009
@ 20:35:
Excelente tutorial pero algo no me funciona , no se me despliegan ni los controles para la paginacion .Tienes talvez un ejemplo completo donde manejes la paginacion ?? Gracias
Jota
on May 29th, 2009
@ 4:46:
dame tiempo y pondre un war con un ejemplo funcional.
alexeicu
on Oct 8th, 2009
@ 9:39:
Me gustaria saber si el paginado implica tambien un limit en el sql final a ejecutar ?, o solo es una forma de paginar el total de registros pero al final siempre se devuelven todos los registros de la consulta en cada pagina ?
hkadejo
on Oct 31st, 2009
@ 12:34:
Este ejemplo no me funciona…
Jose Manuel Prieto
on May 28th, 2010
@ 7:53:
El atributo 'pages' no es necesario para este tipo de ejemplo. Pages continene solo el numero de la pagina en la que se esta actualmente. Un posible uso es tener dos scroller uno arriba y otro abajo. De esta manera mediante pages los dos scroller muestran la misma información.
¿Es este realmente el uso del atributo pages?
Tengo un problema con datascroll. Al ir a la siguiente pagina de una tabla, no me muestra los colores de fondo, tipo cebra, que tengo implementados con rich:jquery. Y no se porque puede ser.