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 相关文章推荐
Node.js 服务器端应用开发框架 -- Hapi.js
Jul 29 Javascript
Node.js如何自动审核团队的代码
Jul 20 Javascript
js实现文字跑马灯效果
Feb 23 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
Apr 20 jQuery
JavaScript实现移动端轮播效果
Jun 06 Javascript
JavaScript中in和hasOwnProperty区别详解
Aug 04 Javascript
关于js的三种使用方式(行内js、内部js、外部js)的程序代码
May 05 Javascript
JavaScript根据json生成html表格的示例代码
Oct 24 Javascript
vue微信分享的实现(在当前页面分享其他页面)
Apr 16 Javascript
原生JS实现随机点名项目的实例代码
Apr 30 Javascript
JavaScript Reflect Metadata实现详解
Dec 12 Javascript
extjs图形绘制之饼图实现方法分析
Mar 06 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
php采集时被封ip的解决方法
2010/08/29 PHP
url decode problem 解决方法
2011/12/26 PHP
PHP写的获取各搜索蜘蛛爬行记录代码
2012/08/21 PHP
PHP的魔术常量__METHOD__简介
2014/07/08 PHP
浅谈thinkphp的实例化模型
2015/01/04 PHP
详解PHP安装mysql.so扩展的方法
2016/12/31 PHP
javascript 内存回收机制理解
2011/01/17 Javascript
zShowBox 图片放大展示jquery版 兼容性
2011/09/24 Javascript
为指定的元素添加遮罩层的示例代码
2014/01/15 Javascript
JQUERY实现网页右下角固定位置展开关闭特效的方法
2015/07/27 Javascript
解决jQuery ajax请求在IE6中莫名中断的问题
2016/06/20 Javascript
BootStrapValidator初使用教程详解
2017/02/10 Javascript
浅析JavaScript中var that=this
2017/02/17 Javascript
微信小程序switch组件使用详解
2018/01/31 Javascript
解决Angular4项目部署到服务器上刷新404的问题
2018/08/31 Javascript
用原生 JS 实现 innerHTML 功能实例详解
2019/04/03 Javascript
使用JS实现动态时钟
2020/03/12 Javascript
vue实现动态表格提交参数动态生成控件的操作
2020/11/09 Javascript
[03:07]【DOTA2亚洲邀请赛】我们,梦开始的地方
2017/03/07 DOTA
在Python中操作列表之List.append()方法的使用
2015/05/20 Python
Python数据分析之真实IP请求Pandas详解
2016/11/18 Python
django模板语法学习之include示例详解
2017/12/17 Python
浅析Python 中几种字符串格式化方法及其比较
2019/07/02 Python
Docker部署Python爬虫项目的方法步骤
2020/01/19 Python
pycharm通过ssh连接远程服务器教程
2020/02/12 Python
纯css3实现效果超级炫的checkbox复选框和radio单选框
2014/09/01 HTML / CSS
HTML5 progress和meter控件_动力节点Java学院整理
2017/07/06 HTML / CSS
巴西化妆品商店:Lojas Rede
2019/07/26 全球购物
农田水利实习自我鉴定
2013/09/19 职场文书
婚礼证婚人证婚词
2014/01/08 职场文书
委托书样本
2014/04/02 职场文书
授权委托书(完整版)
2014/09/10 职场文书
解除同居协议书
2015/01/29 职场文书
2015年小学校长工作总结
2015/05/19 职场文书
贷款工资证明范本
2015/06/12 职场文书
PHP设计模式(观察者模式)
2021/07/07 PHP