我参与过几个包含大量数据表的项目。 这些表当然在服务器端并在db的帮助下进行了排序,过滤和分页 (所有数据库都实现了排序,过滤 - 并限制返回的结果)。
当真正的应用程序工作时,有数千甚至数百万行。
但是我看过几个JSF数据表组件 他们在客户端实现分页,排序和过滤! 据我说这是非常愚蠢的。这项技术称为企业,他们使用java脚本在客户端对数据进行排序!
我还没有看到任何好的JSF数据网格,它在服务器端构建了用于排序,过滤和延迟加载的功能。
为什么?我是在寻找错误的方向还是真的没有建立支持。 最近我正在测试primefaces和延迟加载数据表。它确实工作正常,但我只能懒加载表。如果添加排序和过滤器,则问题就会开始。
结论: 是否有任何可数据化的JSF组件可以执行延迟加载分页,以及在服务器端进行过滤和排序? 如果我需要实施自己的解决方案,感谢那些进行客户端排序和过滤的团队,那么它们就没用了。
答案 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) { .. }
}
您必须以适合您的持久性机制的方式实现所有方法