【问题标题】:Lazy loading showcase primefaces延迟加载展示primefaces
【发布时间】:2014-11-03 08:50:31
【问题描述】:

我想在我的应用程序的数据表中使用延迟加载。我浏览了 Primefaces 展示网站上的示例:http://www.primefaces.org/showcase/ui/data/datatable/lazy.xhtml。但是我不明白这是一个延迟加载的例子。

应用程序第一次加载页面时,他仍然获得了 200 辆汽车。我希望(因为我也想在我的应用程序中以这种方式实现延迟加载)应用程序第一次加载此页面时,他只加载与第一页上的行一样多的条目,然后当用户点击第二页下 x 个条目被加载,依此类推。

由于我有一个潜在的巨大数据表(超过一百万条记录),我显然不想加载一百万条记录,如果他只需要前 20 条记录中的某些内容,则让用户等待 5 分钟。

编辑:更糟糕的是,当我使用 viewscoped 的 spring backing bean 时,我注意到每次用户切换到另一个页面时他都会加载所有记录。我什至会从使用这种没有延迟加载的数据表中受益。

【问题讨论】:

    标签: java primefaces lazy-loading


    【解决方案1】:

    这个例子只是为了展示它是如何工作的。实现方法由您自己决定:

    public List<?> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String,Object> filters)

    这是您必须扩展的LazyDataModel 类的一部分。

    如果您以仅获取页面所需记录的方式实现此方法(即从firstfirst+pageSize 的所有记录),那么您将有适当的延迟加载。展示只是没有可用的数据库实现示例。

    【讨论】:

    • 但是展示中的示例如何是延迟加载的数据表?为什么他们没有展示一个实际上是延迟加载的例子? service.createCars(200) 仍然创建了 200 辆汽车而不是 20
    • 它展示了前端如何通过延迟加载和分页正常工作。因为他们需要某种数据源来显示分页,所以他们需要创建一个汽车池。也许这不是他们身边最好的例子。如果他们例如,这个例子可能会更好一点。将所有汽车放入应用程序范围的 bean(其作用类似于数据库)中,然后在该 bean 上进行查询,而不是在 viewscoped bean 中初始化汽车列表。
    猜你喜欢
    • 2012-04-28
    • 1970-01-01
    • 2012-08-07
    • 2015-09-18
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    相关资源
    最近更新 更多