【问题标题】:jsf datatable with lazy loading, filtering and sorting具有延迟加载、过滤和排序的 jsf 数据表
【发布时间】:2011-02-22 15:42:53
【问题描述】:

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

在实际应用程序中工作时,会有数千甚至数百万行。

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

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

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

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

【问题讨论】:

  • 你有没有找到一种使用延迟加载构建可排序表的好方法?
  • @darpet:你找到一个好的解决方案了吗?
  • Primefaces Datatable 启用延迟加载是今天的答案:-)

标签: jsf sorting datatable filtering lazy-loading


【解决方案1】:

不,没有。因为组件库无法知道持久化机制是什么。

但是,许多数据表都提供了用于呈现这一点的选项。例如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) { .. }

}

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

【讨论】:

    猜你喜欢
    • 2015-04-18
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2018-03-30
    • 2021-10-26
    • 1970-01-01
    • 2013-01-22
    相关资源
    最近更新 更多