2010-05-22 24 views
6

Ho lavorato su diversi progetti con molte tabelle di dati. I tavoli avevano ordinamento, il filtraggio e il paging, naturalmente, sul lato server e con l'aiuto del db (tutte le banche dati hanno implementato l'ordinamento, il filtraggio -dove e limitare i risultati restituiti).jsf datatable con lazy loading, filtering and sorting

Quando workig sulla reale applicazione ci sono migliaia di anche un milioni di righe.

ma ho visto diversi componenti JSF DataTable.
Implementano l'impaginazione, l'ordinamento e il filtraggio sul lato client! Secondo me questo è molto sciocco. Questa tecnologia è chiamata enterprise e ordina i dati sul lato client con lo script java!

non ho visto nulla di buono griglia di dati JSF che ha costruito nelle caratteristiche per l'ordinamento, il filtraggio e lazy loading sul lato server.

Perché è quello? Sto guardando nella direzione sbagliata o davvero lì senza supporto per questo. Ultimamente sto testando le primefaces e il caricamento lazy datatable. Funziona davvero bene, ma il tavolo posso solo caricare pigro. Se aggiungi ordinamento e filtro, iniziano i problemi.

Conclusione: Esiste un componente JSF datatable che può eseguire l'impaginazione con carico lento e il filtraggio e l'ordinamento sul lato server? Se devo implementare la mia soluzione, grazie ai team che hanno reso l'ordinamento e il filtraggio lato client, sono inutili.

+0

Avete mai trovato un buon modo di costruire le tabelle ordinabili con caricamento pigro? –

+0

@darpet: hai trovato una buona soluzione per questo? – user590586

+1

Primefaces Datatable con caricamento lazy abilitato è la risposta oggi :-) –

risposta

5

No, non c'è. Perché la libreria dei componenti non può sapere quale sarà il meccanismo di persistenza.

Tuttavia, le tabelle di dati molte offrono opzioni per presentare questo. Ad esempio, datatable di richfaces ha il cosiddetto DataModel. Per esempio quello che abbiamo fatto è stata:

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) { .. } 

} 

Si dovrà implementare tutti i metodi in un modo che soddisfa il vostro meccanismo di persistenza