我有一个使用Spring REST实现的带有客户端分页的应用程序,使用默认的DataTables插件,一切都正常。现在我需要将其改为服务器端分页,但我遇到了问题,因为不知道如何从DataTables中获取客户端想要查看哪一页的信息。我在DT手册中找不到任何有用的内容。
我有一个使用Spring REST实现的带有客户端分页的应用程序,使用默认的DataTables插件,一切都正常。现在我需要将其改为服务器端分页,但我遇到了问题,因为不知道如何从DataTables中获取客户端想要查看哪一页的信息。我在DT手册中找不到任何有用的内容。
当你说 Datatable
时,我假设你是在谈论 DataTables jQuery 插件。
要激活服务器端分页,您需要传递:
"serverSide": true,
就像这样:
$('#example').DataTable( {
"processing": true,
"serverSide": true,
"ajax": "/your_url"
});
遵循上述步骤将激活您的服务器端分页,但您还需要在服务器端进行一些更改。让我们逐步来看看它们。
serverSide
标记为true
时会发生什么DataTables插件会向AJAX调用添加自定义参数,其中包含诸如信息。
order: asc
start: 20
length: 10
// and many more.
当您点击下一页按钮时,可以检查此演示链接,并查看请求中传递的参数。
"draw": 3, // unique ID
"recordsTotal": 57, // total number of records
"recordsFiltered": 57 // total number of filtered records
您可以检查此演示链接,并查看响应数据。
您需要将这些参数作为queryParam
添加到GET和POST调用中的控制器API的属性中:
order: asc
start: 20
length: 10
在服务层中,您从数据库获取详细信息。
您需要获取记录的总数,并在搜索查询中传递一个 LIMIT 子句 LIMIT 10, 10
(MySQL 的情况下)。
例如:
SELECT * FROM User LIMIT 20,10;
使用start
和length
计算下一组记录。
它可能会更加棘手,但如果你理解并正确实现它,那就很有趣。
在这里详细阅读更多内容,其中还包含代码和实时演示。