首页 > 解决方案 > DataTables 服务器端分页

问题描述

我有使用客户端分页的 Spring REST 应用程序,默认由 DataTables 运行,一切正常。现在我需要将它更改为服务器端分页我有问题,因为不知道如何从 DataTables 获取信息,客户端想要查看什么页码。我在 DT 手册中找不到任何有用的东西。

标签: javaspringdatatables

解决方案


当你说Datatable我假设你在谈论DataTables jQuery 插件时。

要激活服务器端分页,您需要通过

"serverSide": true,

像这样:

$('#example').DataTable( {
    "processing": true,
    "serverSide": true,
    "ajax": "/your_url"
});

执行上述操作将激活您的服务器端分页。但是您也需要在服务器端进行一些更改。让我们一步一步看他们。

1. 当你标记为时会发生serverSide什么true

DataTables 插件向 AJAX 调用添加自定义参数,其中包含以下信息

order:  asc
start:  20
length: 10

// and many more.

当您单击下一页按钮时,您可以检查此演示链接并查看请求中传递的参数。

2. 同样,DataTables 插件需要一些字段作为响应,以保留分页逻辑。

"draw": 3,             // unique ID
"recordsTotal": 57,    // total number of records
"recordsFiltered": 57  // total number of filtered records

这次您可以检查此演示链接并查看响应数据。

3. 现在更改在您的 API 的服务器端

您需要queryParam在控制器 API 的 POST 调用中为 GET 和 attr 添加这些参数:

order: asc
start: 20
length: 10

4.服务层变化——数据库查询

从数据库中获取详细信息的服务层。

如果是 MySQL ,您需要获取记录总数并在搜索查询中传递一个 LIMIT 子句LIMIT 10, 10

例如:

SELECT * FROM User LIMIT 20,10;

使用startlength计算下一组记录。

它可能会更棘手,但如果你理解并正确实施它会很有趣。

在此处阅读更多详细信息,其中还包含代码和现场演示。


推荐阅读