datatables 帶查詢條件java服務(wù)端分頁(yè)處理實(shí)例
使用datatables自帶后臺(tái)查詢
前臺(tái)代碼:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <link rel="shortcut icon" type="image/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",//設(shè)置分頁(yè)控件的模式 searching: false,//屏蔽datatales的查詢框 aLengthMenu:[10],//設(shè)置一頁(yè)展示10條記錄 "bLengthChange": false,//屏蔽tables的一頁(yè)展示多少條記錄的下拉列表 "oLanguage": { //對(duì)表格國(guó)際化 "sLengthMenu": "每頁(yè)顯示 _MENU_條", "sZeroRecords": "沒(méi)有找到符合條件的數(shù)據(jù)", // "sProcessing": "<img src='./loading.gif' />", "sInfo": "當(dāng)前第 _START_ - _END_ 條 共計(jì) _TOTAL_ 條", "sInfoEmpty": "木有記錄", "sInfoFiltered": "(從 _MAX_ 條記錄中過(guò)濾)", "sSearch": "搜索:", "oPaginate": { "sFirst": "首頁(yè)", "sPrevious": "前一頁(yè)", "sNext": "后一頁(yè)", "sLast": "尾頁(yè)" } }, "processing": true, //打開(kāi)數(shù)據(jù)加載時(shí)的等待效果 "serverSide": true,//打開(kāi)后臺(tái)分頁(yè) "ajax": { "url": "../../alarms/datatablesTest", "dataSrc": "aaData", "data": function ( d ) { var level1 = $('#level1').val(); //添加額外的參數(shù)傳給服務(wù)器 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將結(jié)果轉(zhuǎn)換成json格式返回給前臺(tái)
@RequestMapping(value="/datatablesTest", method=RequestMethod.GET) @ResponseBody public DatatablesViewPage<Alarm> datatablesTest(HttpServletRequest request){ //獲取分頁(yè)控件的信息 String start = request.getParameter("start"); System.out.println(start); String length = request.getParameter("length"); System.out.println(length); //獲取前臺(tái)額外傳遞過(guò)來(lái)的查詢條件 String extra_search = request.getParameter("extra_search"); System.out.println(extra_search); //隨便組織的查詢結(jié)果 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的聲明如下:
public class DatatablesViewPage<T> { private List<T> aaData; //aaData 與datatales 加載的“dataSrc"對(duì)應(yīng) private int iTotalDisplayRecords; private int iTotalRecords; public DatatablesViewPage() { } //get set方法 此處省略 }
在后臺(tái)傳輸數(shù)據(jù)也可以用fastjson ;
@ResponseBody @RequestMapping("/datatable2") public JSON getTable2(String aoData){ String sEcho = "";// 記錄操作的次數(shù) 每次加1 String iDisplayStart = "";// 起始 String iDisplayLength = "";// size String sSearch = "";// 搜索的關(guān)鍵字 int count = 1 ; //查詢出來(lái)的數(shù)量 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); }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Java的MyBatis框架中實(shí)現(xiàn)多表連接查詢和查詢結(jié)果分頁(yè)
- Java操作MongoDB模糊查詢和分頁(yè)查詢
- Java分頁(yè)查詢--分頁(yè)顯示(實(shí)例講解)
- 如何用java實(shí)現(xiàn)分頁(yè)查詢
- java web實(shí)現(xiàn)分頁(yè)查詢實(shí)例方法
- JAVA代碼實(shí)現(xiàn)MongoDB動(dòng)態(tài)條件之分頁(yè)查詢
- 詳述 DB2 分頁(yè)查詢及 Java 實(shí)現(xiàn)的示例
- 新聞列表的分頁(yè)查詢java代碼實(shí)現(xiàn)
- Java基礎(chǔ)開(kāi)發(fā)之JDBC操作數(shù)據(jù)庫(kù)增刪改查,分頁(yè)查詢實(shí)例詳解
- Java實(shí)現(xiàn)分頁(yè)查詢功能
相關(guān)文章
Java用split分割含一個(gè)或多個(gè)空格的字符串案例
這篇文章主要介紹了Java用split分割含一個(gè)或多個(gè)空格的字符串案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)過(guò)來(lái)看看吧2020-09-09MyBatis基礎(chǔ)支持DataSource實(shí)現(xiàn)源碼解析
這篇文章主要為大家介紹了MyBatis基礎(chǔ)支持DataSource實(shí)現(xiàn)源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02SpringMVC 傳日期參數(shù)到后臺(tái)的實(shí)例講解
下面小編就為大家分享一篇SpringMVC 傳日期參數(shù)到后臺(tái)的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12java selenium 常見(jiàn)web UI 元素操作及API使用
本文主要介紹java selenium 常見(jiàn)web UI 元素操作,這里幫大家整理了相關(guān)資料并附示例代碼,有需要的小伙伴可以參考下2016-08-08Spring 自動(dòng)裝配的二義性實(shí)例解析
這篇文章主要介紹了Spring 自動(dòng)裝配的二義性實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11