2010-05-22 29 views
6

He trabajado en varios proyectos con muchas tablas de datos. Las tablas tenían clasificación, filtrado y paginación, por supuesto, en el lado del servidor y con la ayuda de la base de datos (todas las bases de datos han implementado la clasificación, filtrado -donde y limitan los resultados devueltos).jsf datatable con carga lenta, filtrado y clasificación

Cuando trabaje en una aplicación real, hay miles de incluso millones de filas.

Pero he visto varios componentes de tablas de datos JSF.
¡Implementan paginación, clasificación y filtrado en el lado del cliente! Según mi, esto es muy tonto. ¡Esta tecnología se llama empresa y clasifican los datos en el lado del cliente con el script java!

No he visto ninguna buena cuadrícula de datos JSF que tenga características de compilación para la clasificación, el filtrado y la carga diferida en el lado del servidor.

¿Por qué es eso? ¿Estoy mirando en la dirección equivocada o realmente no hay soporte de compilación para esto? Últimamente estoy probando Primefaces y datatable de carga lenta. Realmente funciona bien, pero la mesa solo puedo cargar de forma perezosa. Si agrega ordenar y filtrar, comienzan los problemas.

Conclusión: ¿Hay algún componente JSF de tablas de datos que pueda realizar paginación de carga diferida, y filtrado y clasificación en el lado del servidor? Si necesito implementar mi propia solución gracias a los equipos que hicieron la clasificación y el filtrado del lado del cliente, son inútiles.

+0

¿Alguna vez encontrar una buena manera de construir tablas se pueden ordenar con carga diferida? –

+0

@darpet: encontraste una buena solución para eso? – user590586

+1

Primefaces Datatable con carga lenta habilitada es la respuesta hoy :-) –

Respuesta

5

No, no lo hay. Porque la biblioteca de componentes no puede saber cuál será el mecanismo de persistencia.

Sin embargo, muchas tablas de datos ofrecen opciones para presentar esto. Por ejemplo, la datatable de richfaces tiene el llamado DataModel. Por ejemplo lo que hicimos fue:

public class CustomDataProvider implements DataProvider<ClassToShow>, 
     Sortable2, Filterable { .. } 


public class PagingExtendedTableDataModel<T> extends ExtendedDataModel implements 
     Serializable, Modifiable { 

    private DataProvider dataProvider; 
    private Object rowKey; 
    private List wrappedKeys; 
    private Map wrappedData; 
    private Integer rowCount; 
    private Integer rowIndex; 
    private List<FilterField> filterFields; 
    private List<SortField2> sortFields; 

    public PagingExtendedTableDataModel(DataProvider<T> dataProvider) { .. } 

} 

Usted tendrá que poner en práctica todos los métodos de una manera que se adapte a su mecanismo de persistencia

Cuestiones relacionadas