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

 更新时间:2017年06月03日 17:08:53   作者:绝影A  
本篇文章主要介绍了datatables 带查询条件java服务端分页处理实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

使用datatables自带后台查询

前台代码:

<!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格式返回给前台

@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的声明如下:

public class DatatablesViewPage<T> {

  private List<T> aaData; //aaData 与datatales 加载的“dataSrc"对应
  private int iTotalDisplayRecords; 
  private int iTotalRecords;
  public DatatablesViewPage() {

  }
//get set方法 此处省略

}

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

@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);
  }

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

相关文章

  • JAVA CyclicBarrier 示例源码解析

    JAVA CyclicBarrier 示例源码解析

    CyclicBarrier是一个强大的同步工具,可以帮助我们实现复杂的多线程协同任务,这篇文章主要介绍了JAVA CyclicBarrier 示例源码解析,通过本文,我们深入了解了CyclicBarrier的源码实现,并通过一个简单的示例演示了它的用法,需要的朋友可以参考下
    2023-12-12
  • 服务器CPU高居不下,JAVA线程占用排查方式

    服务器CPU高居不下,JAVA线程占用排查方式

    这篇文章主要介绍了服务器CPU高居不下,JAVA线程占用排查方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Java用split分割含一个或多个空格的字符串案例

    Java用split分割含一个或多个空格的字符串案例

    这篇文章主要介绍了Java用split分割含一个或多个空格的字符串案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来过来看看吧
    2020-09-09
  • MyBatis基础支持DataSource实现源码解析

    MyBatis基础支持DataSource实现源码解析

    这篇文章主要为大家介绍了MyBatis基础支持DataSource实现源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • 详解JVM中的GC调优

    详解JVM中的GC调优

    我们经常会听到甚至需要自己动手去做GC调优。那么GC调优的目的到底是什么呢?让程序跑得更快?让GC消耗更少的资源?还是让程序更加稳定?带着这些疑问来读一下这篇文章,将会得到一个系统的甚至是不一样的结果。
    2021-06-06
  • Java基础之关键字final详解

    Java基础之关键字final详解

    这篇文章主要介绍了Java基础之关键字final详解,文中有非常详细的代码示例,对正在学习java基础的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-05-05
  • 浅谈Java中hashCode的正确求值方法

    浅谈Java中hashCode的正确求值方法

    这篇文章主要介绍了浅谈Java中hashCode的正确求值方法,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • SpringMVC 传日期参数到后台的实例讲解

    SpringMVC 传日期参数到后台的实例讲解

    下面小编就为大家分享一篇SpringMVC 传日期参数到后台的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • java selenium 常见web UI 元素操作及API使用

    java selenium 常见web UI 元素操作及API使用

    本文主要介绍java selenium 常见web UI 元素操作,这里帮大家整理了相关资料并附示例代码,有需要的小伙伴可以参考下
    2016-08-08
  • Spring 自动装配的二义性实例解析

    Spring 自动装配的二义性实例解析

    这篇文章主要介绍了Spring 自动装配的二义性实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11

最新评论