Struts2 + Bootstrap 数据表:如何在不加载所有数据的情况下分页

问题描述 投票:0回答:3

我正在使用 Struts2 框架的一些应用程序中工作,在操作中我加载了一些

List<Object>
中我们需要的所有数据,然后在 JSP 文件中使用引导框架迭代此列表并显示在数据表中。

这工作正常,但我知道如何在不加载生成的 HTML 中的完整数据的情况下执行此操作,就像我有 1.000.000(一百万)条记录一样。

我不希望所有记录都在 JSP 生成的 HTML 输出中,只有第 10 条记录,然后通过分页加载(使用 jQuery?)数据集的其余部分(如果需要)。

jquery jsp datatable struts2 pagination
3个回答
1
投票

添加 Enrique San Martín 的评论:http://legacy.datatables.net/usage/server-side

任何好的例子都应该使用

iDisplayStart
iDisplayLength
参数,当然还有
"bServerSide": true
datatable()
属性。

这里是博客文章的链接:使用 Ajax 将 jQuery Datatable 与 Struts2 操作类结合使用


1
投票

最好的方法是在 DAO 中创建一个具有附加参数 start 和 end 的方法,例如:

getCustomers( int start,int end){
// get all customers
// sublist the result and get the data from start index to end index
}

在您的控制器中,您将执行几乎相同的操作,并且您将通过

start
end
请求
 给出 
POST
GET

参数
@RequestMapping(value = "/sublistedCustomers", method = RequestMethod.GET)
public String getSublistedCustomers(@RequestParam("start") final int start,@RequestParam("end") final int end){
 model.addAttribute("cutomersResult",yourDAO.getCustomers(start,end));
}

现在您的 JSP 文件中有一部分客户记录,由您决定如何显示此子列表结果。


1
投票

嗯,这是一些很好的方法,但我必须将

request.getParameter
转换为 Struts 变量(声明为 privated,然后生成 getters 和 setters):

来自: https://datatables.net/development/server-side/jsp

编辑:此链接有一些

request.gP
以及数据表中的旧值,而我们必须使用以下参数:

https://datatables.net/manual/server-side#Sent-parameters

就像一个动作:

private String draw;

private String length;

private String order;

private String search;

private String start;

getters&setters{} //or make it public

然后在ajax调用的

actionMethod
中对数据库进行查询并返回数据集。

当我使用 struts2+datatables 进行完整分页时,我将编辑这个答案,

数据表中有一些必要的配置(请参阅

datatables.net
中的文档):

<script>
$(document).ready( function() {
    $('#datatable').dataTable( {
      "iDisplayLength": 5,
      "processing": true,
      "serverSide": true,
      "ajax": "paginateTableAction"
    } );
  } );
</script>
© www.soinside.com 2019 - 2024. All rights reserved.