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

dar*_*pet 6 sorting datatable jsf filtering lazy-loading

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

在真正的应用程序上工作时,有数千甚至数百万行.

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

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

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

结论:是否有任何可数据化的JSF组件可以执行延迟加载分页,以及在服务器端进行过滤和排序?如果我需要实现自己的解决方案,这要归功于进行客户端排序和过滤的团队,它们是无用的.

Boz*_*zho 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) { .. }

}
Run Code Online (Sandbox Code Playgroud)

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