Bootstrap table 服务器端分页功能实现方法示例


Posted in Javascript onJune 01, 2020

本文实例讲述了Bootstrap table 服务器端分页功能实现方法。分享给大家供大家参考,具体如下:

bootstrap版本 为 3.X

bootstrap-table.min.css
bootstrap-table-zh-CN.min.js
bootstrap-table.min.js

前端bootstrap+jQuery,服务端使用spring MVC实现restful风格服务

前端代码块

<table id="test-table" class="col-xs-12" data-toolbar="#toolbar">
function initTable(){
  $('#test-table').bootstrapTable({
    method: 'get',
    toolbar: '#toolbar',  //工具按钮用哪个容器
    striped: true,   //是否显示行间隔色
    cache: false,   //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
    pagination: true,   //是否显示分页(*)
    sortable: false,   //是否启用排序
    sortOrder: "asc",   //排序方式
    pageNumber:1,   //初始化加载第一页,默认第一页
    pageSize: 10,   //每页的记录行数(*)
    pageList: [10, 25, 50, 100], //可供选择的每页的行数(*)
    url: "/testProject/page4list.json",//这个接口需要处理bootstrap table传递的固定参数
    queryParamsType:'', //默认值为 'limit' ,在默认情况下 传给服务端的参数为:offset,limit,sort
              // 设置为 '' 在这种情况下传给服务器的参数为:pageSize,pageNumber

    //queryParams: queryParams,//前端调用服务时,会默认传递上边提到的参数,如果需要添加自定义参数,可以自定义一个函数返回请求参数
    sidePagination: "server",  //分页方式:client客户端分页,server服务端分页(*)
    //search: true,   //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
    strictSearch: true,
    //showColumns: true,   //是否显示所有的列
    //showRefresh: true,   //是否显示刷新按钮
    minimumCountColumns: 2,  //最少允许的列数
    clickToSelect: true,  //是否启用点击选中行
    searchOnEnterKey: true,
    columns: [{
      field: 'id',
      title: 'id',
      align: 'center'
    }, {
      field: 'testkey',
      title: '测试标识',
      align: 'center'
    }, {
      field: 'testname',
      title: '测试名字',
      align: 'center'
    },{
      field: 'id',
      title: '操作',
      align: 'center',
      formatter:function(value,row,index){
        //通过formatter可以自定义列显示的内容
        //value:当前field的值,即id
        //row:当前行的数据
        var a = '<a href="" >测试</a>';
      } 
    }],
    pagination:true
  });
}

在前端通过请求获取table数据时,bootstrap table会默认拼一个 searchText的参数,来支持查询功能。

服务端代码

@RequestMapping(value = "/page4list.json")
  public void page4list(Integer pageSize, Integer pageNumber, String searchText, HttpServletRequest request,
      HttpServletResponse response) {

    //搜索框功能
    //当查询条件中包含中文时,get请求默认会使用ISO-8859-1编码请求参数,在服务端需要对其解码
    if (null != searchText) {
      try {
        searchText = new String(searchText.getBytes("ISO-8859-1"), "UTF-8");
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
    //在service通过条件查询获取指定页的数据的list
    List<MwmsgType> list = mwMsgQueueService.page4List(pageSize, pageNumber, searchText);
    //根据查询条件,获取符合查询条件的数据总量
    int total = mwMsgQueueService.queryCountBySearchText(searchText);
    //自己封装的数据返回类型,bootstrap-table要求服务器返回的json数据必须包含:totlal,rows两个节点
    PageResultForBootstrap page = new PageResultForBootstrap();
    page.setTotal(total);
    page.setRows(list);
    //page就是最终返回给客户端的数据结构,可以直接返回给前端

    //下边这段,只是我自己的代码有自定义的spring HandlerInterceptor处理返回值,可以忽略。
    request.setAttribute(Constants.pageResultData, page);

  }

完成上述代码,即可实现服务器端自动分页,bootstrap-table根据服务器端返回的total,以及table设定的pageSize,自动生成分页的页面元素,每次点击下一页或者指定页码,bootstrap-table会自动给参数pageNumber赋值,服务器返回指定页的数据。

如果发送的是post请求,因为bootstap table使用的是ajax方式获取数据,这时会将请求的content type默认设置为 text/plain,这样在服务端直接通过 @RequestParam参数映射是获取不到的。

这时就需要在bootstrap-table的参数列表中显式设置

contentType: "application/x-www-form-urlencoded"

设置成form表单的形式,tomcat内部就会自动将requset payload中的数据部分解析放到request.getParameter()中,之后就可以直接通过@RequestParam映射参数获取
post的处理参考了下面这个哥们的博文,在此感谢!

参考链接:
https://3water.com/article/129039.htm

Javascript 相关文章推荐
JS request函数 用来获取url参数
May 17 Javascript
S2SH整合JQuery+Ajax实现登录验证功能实现代码
Jan 30 Javascript
Javascript中的for in循环和hasOwnProperty结合使用
Jun 05 Javascript
Jquery绑定事件(bind和live的区别介绍)
Aug 23 Javascript
AngularJS的表单使用详解
Jun 17 Javascript
分享jQuery插件的学习笔记
Jan 14 Javascript
浅析JavaScript中的对象类型Object
May 26 Javascript
Angularjs的启动过程分析
Jul 18 Javascript
JavaScript面向对象程序设计中对象的定义和继承详解
Jul 29 Javascript
Angular6使用forRoot() 注册单一实例服务问题
Aug 27 Javascript
在Koa.js中实现文件上传的接口功能
Oct 08 Javascript
JavaScript享元模式原理与用法实例详解
Mar 09 Javascript
easyUI 实现的后台分页与前台显示功能示例
Jun 01 #Javascript
JS如何寻找数组中心索引过程解析
Jun 01 #Javascript
easyUI使用分页过滤器对数据进行分页操作实例分析
Jun 01 #Javascript
bootstrap-table后端分页功能完整实例
Jun 01 #Javascript
jQuery实现倒计时功能完整示例
Jun 01 #jQuery
微信小程序订阅消息(java后端实现)开发
Jun 01 #Javascript
微信小程序开发(三):返回上一级页面并刷新操作示例【页面栈】
Jun 01 #Javascript
You might like
详解Yii2.0 rules验证规则集合
2017/03/21 PHP
JavaScript 字符串与数组转换函数[不用split与join]
2009/12/13 Javascript
起点页面传值js,有空研究学习下
2010/01/25 Javascript
js 数据类型转换总结笔记
2011/01/17 Javascript
iframe的onreadystatechange事件在firefox下的使用
2014/04/16 Javascript
node.js中的fs.readlink方法使用说明
2014/12/17 Javascript
调试JavaScript中正则表达式中遇到的问题
2015/01/27 Javascript
jQuery知识点整理
2015/01/30 Javascript
JS基于面向对象实现的放烟花效果
2015/05/07 Javascript
使用AngularJS创建自定义的过滤器的方法
2015/06/18 Javascript
基于JS如何实现给字符加千分符(65,541,694,158)
2016/08/03 Javascript
jQuery使用animate实现ul列表项相互飘动效果示例
2016/09/16 Javascript
浅谈js停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)
2017/02/08 Javascript
Angular+Bootstrap+Spring Boot实现分页功能实例代码
2017/07/21 Javascript
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
2017/08/09 jQuery
Vue中对拿到的数据进行A-Z排序的实例
2018/09/25 Javascript
JavaScript实现复选框全选和取消全选
2020/11/20 Javascript
[06:45]DOTA2-DPC中国联赛 正赛 Magma vs LBZS 选手采访
2021/03/11 DOTA
python中关于日期时间处理的问答集锦
2013/03/08 Python
python实现调用其他python脚本的方法
2014/10/05 Python
Python语言实现机器学习的K-近邻算法
2015/06/11 Python
pyqt5 获取显示器的分辨率的方法
2019/06/18 Python
python监控nginx端口和进程状态
2019/09/06 Python
Django框架HttpResponse对象用法实例分析
2019/11/01 Python
python爬虫实例之获取动漫截图
2020/05/31 Python
2021年值得向Python开发者推荐的VS Code扩展插件
2021/01/25 Python
英国外籍人士的在线超市:British Corner Shop
2019/06/03 全球购物
客服专员岗位职责
2014/02/28 职场文书
小学社会实践活动总结
2014/07/03 职场文书
无房产证房屋转让协议书合同样本
2014/10/18 职场文书
女儿满月酒致辞
2015/07/29 职场文书
退休欢送会致辞
2015/07/31 职场文书
党性修养心得体会2016
2016/01/21 职场文书
python ansible自动化运维工具执行流程
2021/06/24 Python
centos8安装nginx1.9.1的详细过程
2021/08/02 Servers
vue router 动态路由清除方式
2022/05/25 Vue.js