具有延迟加载,过滤和排序的jsf数据表

时间:2010-05-22 07:03:15

标签: jsf sorting datatable filtering lazy-loading

我参与过几个包含大量数据表的项目。 这些表当然在服务器端并在db的帮助下进行了排序,过滤和分页 (所有数据库都实现了排序,过滤 - 并限制返回的结果)。

当真正的应用程序工作时,有数千甚至数百万行。

但是我看过几个JSF数据表组件 他们在客户端实现分页,排序和过滤! 据我说这是非常愚蠢的。这项技术称为企业,他们使用java脚本在客户端对数据进行排序!

我还没有看到任何好的JSF数据网格,它在服务器端构建了用于排序,过滤和延迟加载的功能。

为什么?我是在寻找错误的方向还是真的没有建立支持。 最近我正在测试primefaces和延迟加载数据表。它确实工作正常,但我只能懒加载表。如果添加排序和过滤器,则问题就会开始。

结论: 是否有任何可数据化的JSF组件可以执行延迟加载分页,以及在服务器端进行过滤和排序? 如果我需要实施自己的解决方案,感谢那些进行客户端排序和过滤的团队,那么它们就没用了。

1 个答案:

答案 0 :(得分: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) { .. }

}

您必须以适合您的持久性机制的方式实现所有方法