java - DataTables 服务器端分页
问题描述
我有使用客户端分页的 Spring REST 应用程序,默认由 DataTables 运行,一切正常。现在我需要将它更改为服务器端分页我有问题,因为不知道如何从 DataTables 获取信息,客户端想要查看什么页码。我在 DT 手册中找不到任何有用的东西。
解决方案
当你说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;
使用start
和length
计算下一组记录。
它可能会更棘手,但如果你理解并正确实施它会很有趣。
在此处阅读更多详细信息,其中还包含代码和现场演示。
推荐阅读
- javascript - React Native,无法滚动flatList
- c# - 更改用户 ID 类型时无法在 asp.net core Identity + PostgreSQL 上运行 Add-Migration
- javascript - 在 Laravel 上打印提交表单的窗口而不进行重定向
- php - 处理 php xpath 属性中的任何类型的引号
- aws-lambda - 发生无服务器错误:ApiGatewayResourcePatientsetPidVar - 此资源的同级 ({id})
- android - 重新打开应用程序时打开最后显示的片段的最佳方法是什么?
- powershell - Powershell - 循环运行控制台应用程序>等待 Ctrl+c
- pattern-matching - 对象模式匹配导致未初始化的变量
- reactjs - Reactjs 中的 Material-ui 表服务器端分页
- ansible - Ansible:如何定义 localhost os_family 条件