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

时间:2016-04-06 14:33:40

标签: jquery jsp datatable struts2 pagination

我正在使用Struts2框架的某个应用程序中工作,我在一些List<Object>中加载了我们需要的所有数据,然后在JSP文件中,这个列表被迭代并显示在数据表中使用bootstrap框架。

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

我不希望所有记录都在JSP的结果HTML输出中,只有10首,并且如果需要,还需要使用分页加载(使用jQuery?)其余数据集。

3 个答案:

答案 0 :(得分:1)

最好的方法是在DAO中创建一个方法,该方法具有附加参数start&amp;结束例如:

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

在您的控制器中,您的工作几乎相同,您将通过startend请求提供POSTGET个参数

@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 :(得分:1)

添加到EnriqueSanMartín的评论:http://legacy.datatables.net/usage/server-side

任何好的示例都应该使用iDisplayStartiDisplayLength参数,当然还有"bServerSide": true datatable()的属性。

此处是博文的链接:Using jQuery Datatable with Struts2 action class using Ajax

答案 2 :(得分:1)

嗯,这是一个很好的方法,但我必须将request.getParameter转换为struts变量(声明为privated,然后生成getter y setters):

FROM: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中查询db并返回数据集。

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

在数据表中有一些必要的配置(参见datatables.net的文档):

<script>
$(document).ready( function() {
    $('#datatable').dataTable( {
      "iDisplayLength": 5,
      "processing": true,
      "serverSide": true,
      "ajax": "paginateTableAction"
    } );
  } );
</script>