datatables 带查询条件java服务端分页处理实例

2025-05-29 0 59

使用datatables自带后台查询

前台代码:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87
<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<link rel="shortcut icon" type="image/ico"

href="http://www.datatables.net/favicon.ico" rel="external nofollow" >

<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">

<link rel="stylesheet" type="text/css"

href="../../js/DataTables-1.10.8/media/css/jquery.dataTables.css" rel="external nofollow" >

<script type="text/javascript" language="javascript"

src="../../js/DataTables-1.10.8/media/js/jquery.js"></script>

<script type="text/javascript" language="javascript"

src="../../js/DataTables-1.10.8/media/js/jquery.dataTables.js"></script>

<script type="text/javascript" language="javascript" class="init">

var table;

$(document).ready(function() {

table = $('#example').DataTable( {

"pagingType": "simple_numbers",//设置分页控件的模式

searching: false,//屏蔽datatales的查询框

aLengthMenu:[10],//设置一页展示10条记录

"bLengthChange": false,//屏蔽tables的一页展示多少条记录的下拉列表

"oLanguage": { //对表格国际化

"sLengthMenu": "每页显示 _MENU_条",

"sZeroRecords": "没有找到符合条件的数据",

// "sProcessing": "&lt;img src='./loading.gif' /&gt;",

"sInfo": "当前第 _START_ - _END_ 条 共计 _TOTAL_ 条",

"sInfoEmpty": "木有记录",

"sInfoFiltered": "(从 _MAX_ 条记录中过滤)",

"sSearch": "搜索:",

"oPaginate": {

"sFirst": "首页",

"sPrevious": "前一页",

"sNext": "后一页",

"sLast": "尾页"

}

},

"processing": true, //打开数据加载时的等待效果

"serverSide": true,//打开后台分页

"ajax": {

"url": "../../alarms/datatablesTest",

"dataSrc": "aaData",

"data": function ( d ) {

var level1 = $('#level1').val();

//添加额外的参数传给服务器

d.extra_search = level1;

}

},

"columns": [

{ "data": "total" },

{ "data": "level" }

]

} );

} );

function search1()

{

table.ajax.reload();

}

</script>

</head>

<body class="dt-example">

<div>

<input type="text" id="level1">

<input type="button" onclick="search1()" value="查询">

</div>

<table id="example" class="display" cellspacing="0" width="100%">

<thead>

<tr>

<th>Name</th>

<th>Position</th>

</tr>

</thead>

</table>

</body>

</html>

Java代码如下,使用spring的 @ResponseBody将结果转换成json格式返回给前台

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30
@RequestMapping(value="/datatablesTest", method=RequestMethod.GET)

@ResponseBody

public DatatablesViewPage<Alarm> datatablesTest(HttpServletRequest request){

//获取分页控件的信息

String start = request.getParameter("start");

System.out.println(start);

String length = request.getParameter("length");

System.out.println(length);

//获取前台额外传递过来的查询条件

String extra_search = request.getParameter("extra_search");

System.out.println(extra_search);

//随便组织的查询结果

List<Alarm> list = new ArrayList<Alarm>();

Alarm alarm = new Alarm();

alarm.setLevel(1);

alarm.setTotal(100L);

list.add(alarm);

alarm = new Alarm();

alarm.setLevel(2);

alarm.setTotal(100L);

list.add(alarm);

DatatablesViewPage<Alarm> view = new DatatablesViewPage<Alarm>();

view.setiTotalDisplayRecords(100);

view.setiTotalRecords(100);

view.setAaData(list);

return view;

}

DatatablesViewPage的声明如下:

?

1

2

3

4

5

6

7

8

9

10

11
public class DatatablesViewPage<T> {

private List<T> aaData; //aaData 与datatales 加载的“dataSrc"对应

private int iTotalDisplayRecords;

private int iTotalRecords;

public DatatablesViewPage() {

}

//get set方法 此处省略

}

在后台传输数据也可以用fastjson ;

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37
@ResponseBody

@RequestMapping("/datatable2")

public JSON getTable2(String aoData){

String sEcho = "";// 记录操作的次数 每次加1

String iDisplayStart = "";// 起始

String iDisplayLength = "";// size

String sSearch = "";// 搜索的关键字

int count = 1 ; //查询出来的数量

JSONArray alldata = JSON.parseArray(aoData);

for (int i = 0; i <alldata.size() ; i++) {

JSONObject obj = (JSONObject) alldata.get(i);

if (obj.get("name").equals("sEcho"))

sEcho = obj.get("value").toString();

if (obj.get("name").equals("iDisplayStart"))

iDisplayStart = obj.get("value").toString();

if (obj.get("name").equals("iDisplayLength"))

iDisplayLength = obj.get("value").toString();

if (obj.get("name").equals("sSearch"))

sSearch = obj.get("value").toString();

}

DataTableModel u1 = new DataTableModel();

u1.setFirst_name("Airi");

u1.setLast_name("Satou");

u1.setPosition("Accountant");

u1.setOffice("Tokyo");

u1.setStart_date("28th Nov 08");

u1.setSalary("$162,700");

Map<String,Object> listMap = new HashMap<String, Object>();

List<DataTableModel> list = new ArrayList<DataTableModel>();

list.add(u1);

listMap.put("iTotalRecords",count);

listMap.put("sEcho",Integer.parseInt(sEcho)+1);

listMap.put("iTotalDisplayRecords",count);

listMap.put("aaData",list);

return (JSON)JSON.toJSON(listMap);

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。

原文链接:http://blog.csdn.net/lllliulin/article/details/51193004

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 datatables 带查询条件java服务端分页处理实例 https://www.kuaiidc.com/115886.html

相关文章

发表评论
暂无评论