====== 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//