2010-05-22 16 views
6

我已經在很多數據表的幾個項目工作。 這些表在服務器端有分類,過濾和分頁,並且在db的幫助下(所有的數據庫都實現了排序,過濾和限制返回的結果)。jsf datatable與延遲加載,篩選和排序

當在真實應用程序上工作時,有數千甚至上百萬行。

但我見過幾個JSF數據表組件。
他們在客戶端實現分頁,排序和過濾! 根據我這是非常愚蠢的。這種技術被稱爲企業,他們用java腳本對客戶端的數據進行排序!

我還沒有看到任何良好的JSF數據網格,它具有在服務器端進行排序,過濾和延遲加載的功能。

這是爲什麼?我是朝着錯誤的方向發展,還是真的沒有這方面的支持。 最近我正在測試primefaces和延遲加載數據表。它確實工作正常,但我只能懶加載表。如果你添加排序和過濾,那麼問題就開始了。

結論: 是否有任何數據表JSF組件可以執行延遲加載分頁以及在服務器端進行過濾和排序? 如果我需要實現我自己的解決方案,這要感謝進行客戶端排序和篩選的團隊,但它們毫無用處。

+0

你有沒有發現建築排序表與延遲加載的一個好方法方式,所有的方法呢? – 2010-07-27 00:13:56

+0

@darpet:你找到了一個好的解決方案嗎? – user590586 2011-12-19 15:06:47

+1

啓用延遲加載的Primefaces Datatable是今天的答案:-) – 2014-11-21 21:01:36

回答

5

不,沒有。因爲組件庫不知道什麼是持久性機制。

但是,許多數據表格提供了用於顯示該選項的選項。例如,richfaces的數據表具有所謂的DataModel。例如我們所做的是:

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

} 

您必須實現適合你的持久機制