存在多个 Play Framework 分页问题,但全部都使用 JPA 或 ebean。我需要对从网络服务返回的数据进行分页。有没有办法使用 Play 分页模块来做到这一点,还是我只能使用 jQuery?我也是来自 asp.net MVC 的 Java 新手。 Web 服务正在返回我正在查询的任何模型的列表。
最佳答案
您不应在 Play Controller 中对 Web 服务的结果进行分页,因为这不是最佳选择,请考虑 3 种情况(按顺序)
假设您想要一次显示 10 个项目,但您的生成器为示例查询返回 100.000(这意味着 10.000 个页面)
- 分页应该由数据生成器(在本例中为 Web 服务)完成,因此您应该发送包含数据的查询:
您在寻找什么
、您想要获得多大的页面
和您需要哪个页面
,即:?q=pagination&size=10&page=123
。这将响应第 123 页上的 10 项列表。如果您可以更改网络服务以添加分页,那么这是最佳选择。 - 如果 Web 服务不提供分页,则立即获取所有结果并使用 jQuery 对其进行分页。因此,如果您将获得 100.000 个项目,请将它们全部放入客户端,并确保每次页面更改都不会导致查询 Web 服务。糟糕的选择,但仍然比下一个更好。
- 您可以迭代返回的结果以轻松地将其拆分为页面,计算总金额等。如果您使用 Controller 对其进行分页,则在每次页面更改时,它将获取 100.000 个项目,然后拆分以仅显示其中 10 个。戏剧:)
因此,如果您不能使用第一个选项并且不想使用 jQuery,请在服务器上对结果进行一些缓存(即,通过将结果作为单独的行存储在数据库中) - 在这种情况下,您将能够使用Ebean进行本地搜索和分页。
关于java - Play Framework 2 对来自 Web 服务的数据进行分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12957890/