Buscar
Social
Ofertas laborales ES

Foro sobre Java EE > Paginacion y Ordenacion de Listados

Hola a todos

Tengo una aplicación web en la que hay un montón de listados, es decir, segun unos parámetros introducidos por el usuario, consulto la base de datos y muestro todos los resultados por pantalla.
Ahora quiero que el usuario tenga la posibilidad de ordenar los resultados como el quiera pulsando en el título de las columnas y que aparezcan sólo un número de resultados por pantalla.

Si hay que hacerlo modificando la consulta sql lo hago pero me parece raro que no se haya inventado nada sobre ese tema. Es decir, algo similar a recuperar todos los datos de la consulta en un vector y que haya un controlador que te los muestre por pantalla automáticamente sin tener que llevar yo el registro

julio 7, 2015 | Registered Commentermojinoadicto

Hola

Yo he trabajado en alguna ocasión con displaytag para el tema de la ordenación y la paginación. Pero no es magia, algo tendrás que implemetar tu XD

Espero que te ayude: http://demo.displaytag.org/displaytag-examples-1.2/

Ahi hay ejemplos desde muy simples a complejos, y puedes ver el código fuente de la tabla de cada ejemplo. Después lo adapatas a tu vista y tu ojbeto java con los datos.

Saludos

julio 7, 2015 | Registered Commenteroldskultxo

Dinos que tecnología utilizas tanto en el front de tu aplicación (jsf, jsp, angular...) y en el back para hacer tus consultas (jdbc, spring, hibernate.....) y será mucho más fácil contestarte y afinar.

Gracias.

julio 7, 2015 | Registered Commenterantuansoft

Perdon
uso JSF, SPRING y JPA

Estaba buscando algo similar a
http://stackoverflow.com/questions/9714288/datatable-at-server-side

julio 8, 2015 | Unregistered Commentermojinoadicto

Te recomiendo te mires la librería de primefaces, no se si la conoces.

Aquí el enlace a los demos de tablas que permite crear:

primefaces datatables

Si te fijas arriba donde pone basic,selection,columns, paginator,.... Tienes datatables para todos los gustos y puedes combinar unas con otras. Con esa librería te ahorraras muchísimo tiempo.

Un saludo.

julio 8, 2015 | Registered Commenterloderain

mil gracias

un gran enlace

Genial

julio 10, 2015 | Unregistered Commentermojinoadicto

he estado mirando los ejemplos y me he encontrado el siguiente error
He intentado adaptar los ejemplos de la siguiente pagina
http://www.primefaces.org/showcase/ui/data/datatable/filter.xhtml

pero cuando intento adaptar las opciones de "brand", "color", "status", no reconoce los componentes p:selectOneButton, p:selectCheckboxMenu y p:selectOneMenu.
No da error al ejecutarse pero en la página aparece como si fuera la opción del "id", un imputText. Tengo xmlns:p="http://primefaces.org/ui"

¿A que puede ser debido?
Espero haberme explicado mas o menos bien

Gracias

julio 10, 2015 | Unregistered Commentermojinoadicto

Desde mi punto de vista hacerlo con el componente de primeFaces no es lo mejor porque lo que hace es cargar todos los datos de la lista y luego presentarlos en pantalla en trozos. Eso es completamente ineficiente si tienes una cantidad de datos enooorme!!!!, para pocos datos podría valer.

Te aconsejo que implementes la paginación desde Spring ya que sólo te traerá los X registros que tú le pidas.

Tu interfaz del repositorio de datos sólo tiene que heredar de PagingAndSortingRepository para que puedas usar esa funcionalidad de paging and sorting.

http://springinpractice.com/2012/05/11/pagination-and-sorting-with-spring-data-jpa

julio 13, 2015 | Unregistered Commenterantuansoft

Gracias antuansoft
Al final te voy a hacer caso y voy a seguir esa estrategia mas o menos.
Pero ahora me surge la duda. Tengo tablas con muchas columnas y si le añado un commandlink al lado del nombre de la columna para indicar que se puede ordenar pues no queda bien.

<th>#{findDonante['cCodU']}
<h:commandLink type="button" action="#{findDonanteBean.mostrarPorCol1()}"
class="btn btn-default btn-xs" action="#{findDonanteBean.mostrarPorCol1()}">
<span class="glyphicon glyphicon-sort"></span>
<f:ajax render="panelDonantes"></f:ajax>
</h:commandLink>
</th>

Se puede hace que desde el th se ejecute el action directamente?

julio 16, 2015 | Unregistered Commentermojinoadicto

No estoy muy puesto en jsf pero si lo pones en el th debería funcionar.

julio 17, 2015 | Registered Commenterantuansoft