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 相关文章推荐
excel操作之Add Data to a Spreadsheet Cell
Jun 12 Javascript
js活用事件触发对象动作
Aug 10 Javascript
utf-8编码引起js输出中文乱码的解决办法
Jun 23 Javascript
CSS(js)限制页面显示的文本字符长度
Dec 27 Javascript
js防止DIV布局滚动时闪动的解决方法
Oct 30 Javascript
BootStrap的Datepicker控件使用心得分享
May 25 Javascript
BootStrap Validator对于隐藏域验证和程序赋值即时验证的问题浅析
Dec 01 Javascript
webpack打包react项目的实现方法
Jun 21 Javascript
angular 服务的单例模式(依赖注入模式下)详解
Oct 22 Javascript
微信小程序事件对象中e.target和e.currentTarget的区别详解
May 08 Javascript
微信小程序和H5页面间相互跳转代码实例
Sep 19 Javascript
JS实现动态倒计时功能(天数、时、分、秒)
Dec 12 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中数组的三种排序方法分享
2012/05/07 PHP
关于更改Zend Studio/Eclipse代码风格主题的介绍
2013/06/23 PHP
简单谈谈PHP中strlen 函数
2016/02/27 PHP
CodeIgniter记录错误日志的方法全面总结
2016/05/17 PHP
jQuery实现鼠标经过图片预览大图效果
2014/04/10 Javascript
jQuery中attr()和prop()在修改checked属性时的区别
2014/07/18 Javascript
javascript设计模式之中介者模式Mediator
2014/12/30 Javascript
JS实现保留n位小数的四舍五入问题示例
2016/08/03 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
2016/12/15 Javascript
微信小程序 自定义对话框实例详解
2017/01/20 Javascript
详解基于node的前端项目编译时内存溢出问题
2017/08/01 Javascript
vue源码解析之事件机制原理
2018/04/21 Javascript
vue-cli初始化项目中使用less的方法
2018/08/09 Javascript
关于vue路由缓存清除在main.js中的设置
2019/11/06 Javascript
vue2和vue3的v-if与v-for优先级对比学习
2020/10/10 Javascript
[00:19]CN DOTA NEVER DIE!VG夺冠rOtK接受采访
2019/12/23 DOTA
Python set集合类型操作总结
2014/11/07 Python
Python中type的构造函数参数含义说明
2015/06/21 Python
Python使用progressbar模块实现的显示进度条功能
2018/05/31 Python
Python文件监听工具pyinotify与watchdog实例
2018/10/15 Python
python 函数内部修改外部变量的方法
2018/12/18 Python
对Python的交互模式和直接运行.py文件的区别详解
2019/06/29 Python
python字符串的拼接方法总结
2019/11/18 Python
numpy.transpose()实现数组的转置例子
2019/12/02 Python
python装饰器相当于函数的调用方式
2019/12/27 Python
Python读写操作csv和excle文件代码实例
2020/03/16 Python
Html5之webcoekt播放JPEG图片流
2020/09/22 HTML / CSS
美国知名玩具品牌:Melissa & Doug
2016/08/16 全球购物
Blue Nile蓝色尼罗河香港官网:世界最大在线钻石珠宝销售商
2020/05/07 全球购物
Android interview questions
2016/12/25 面试题
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
2014/07/27 面试题
面试后感谢信怎么写
2014/02/01 职场文书
生态养殖创业计划书
2014/05/06 职场文书
党的群众路线教育实践活动自我剖析材料
2014/10/08 职场文书
市场部岗位职责范本
2015/04/15 职场文书
关于幸福的感言
2015/08/03 职场文书