====== Ordenación Múltiple en Tablas PrimeFaces cargadas mediante LazyDataModel ====== Si utilizas [[fdw2.0:fundeweb2.0:gt:creacion_del_bean_de_respaldo_del_maestro|FundeWebLazyDataModel]] ya no es necesario revisar esta Wiki. La funcionalidad ya esta incluida. Vamos a ver como tener ordenación múltiple en tablas PrimeFaces que cargan los datos mediante un objeto //LazyDataModel//. Lo primero es leer la guía tecnica [[fdw2.0:fundeweb2.0:gt:creacion_del_bean_de_respaldo_del_maestro|Creación del Bean de Respaldo del Maestro y clases necesarias]]. Una vez que tenemos el //lazy// creado, el método de la clase //LazyDataModel// al que llama PrimeFaces para cargar los datos con ordenación multiple es: \\ /** * Custom lazy loading DataModel to deal with huge datasets */ public abstract class LazyDataModel extends DataModel implements SelectableDataModel, Serializable { ... public List load(int first, int pageSize, List multiSortMeta, Map filters) { throw new UnsupportedOperationException("Lazy loading is not implemented."); } ... } \\ Este método lo tenemos que sobreescribir en nuestra clase //lazy//. En este caso, seguimos el ejemplo de la guía anterior: \\ package ...; ... import es.um.atica.faces.utils.PrimeFacesUtils; ... public class LazyAnuncioDataModel extends LazyDataModel { ... @Override public List load(int first, int pageSize, List multiSortMeta, Map filters) { ResultQuery resultQuery = getServicioAnuncios().obtenerListadoAnuncios(parametros, first, pageSize, PrimeFacesUtils.sortMetaToString(multiSortMeta)); anuncios = resultQuery.getResultList(); setRowCount((int) resultQuery.getResultCount()); return anuncios; } ... } \\ El método estático //sortMetaToString// de la clase //PrimeFacesUtils//, transforma una lista de objetos //SortMeta// en un //String//. Ahora tenemos que crear la llamada en el servicio y el DAS, para en lugar de utilizarel metodo que utiliza los parámetros //sortField// y //sortOrder//, utilizar la versión del método, que utiliza el parámetro //order//. \\ ==== Referencias ==== * [[https://www.primefaces.org/showcase/ui/data/datatable/basic.xhtml|PrimeFaes Showcase - Datatable]] ---- --- //[[juanmiguel.bernal@ticarum.es|JUAN MIGUEL BERNAL GONZALEZ]] 20/11/2018 08:50//