English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Introducción
Basado en SpringMVC+Bootstrap+DataTables realiza la paginación del servidor de la tabla de datos, la búsqueda borrosa (no DataTable Search), actualización asincrónica de la página.
Nota: El etiqueta sp:message utiliza la internacionalización de SpringMVC
Efecto
Tabla de DataTables
Búsqueda de palabras clave
Búsqueda de palabras clave personalizada, no DataTable Search
Código
Código HTML
Código de condiciones de búsqueda
<!-- Consultar, agregar, eliminar en lote, exportar, actualizar --> <div class="row-fluid"> <div class="pull-right"> <div class="btn-group"> <button type="button" class="btn btn-primary btn-sm" id="btn-add"> <i class="fa fa-plus"></i> <sp:message code="sys.add"/> </button> <button type="button" class="btn btn-primary btn-sm" id="btn-delAll"> <i class="fa fa-remove"></i> <sp:message code="sys.delAll"/> </button> <button type="button" class="btn btn-primary btn-sm" id="btn-export"> <i class="fa fa-sign-in"></i> <sp:message code="sys.export"/> </button> <button type="button" class="btn btn-primary btn-sm" id="btn-re"> <i class="fa fa-refresh"></i> <sp:message code="sys.refresh"/> </button> </div> </div> <div class="row"> <form id="queryForm" action="<%=path%>/goodsType/method="post"> <div class="col"}-xs-2"> <input type="text" id="keyword" name="keyword" class="form-control de entrada-sm" placeholder="<sp:message code="sys.keyword"/">> </div> <button type="button" class="btn btn-primary btn-sm" id="btn-query"> <i class="fa fa-search"></i> <sp:message code="sys.query"/> </button> </form> </div> </div>
Código de la tabla de datos
<table id="dataTable" class="table table-tabla con rayas-tabla con borde-tabla con efecto hover-condensed" align="center"> <thead> <tr class="info"> <td><input type="checkbox" id="checkAll"></td> <th><sp:message code="sys.no"/></th> <th><sp:message code="goods.type.name.cn"/></th> <th><sp:message code="goods.type.name.en"/></th> <th><sp:message code="sys.create.time"/></th> <th><sp:message code="sys.update.time"/></th> <th><sp:message code="sys.oper"/></th> </tr> </thead> </table>
Código JS
Inicialización de DataTables, solicitud de datos del lado del servidor, encapsulación de condiciones de búsqueda
<!-- script de página --> <script> $(function () { //Agregar, modificar la dirección de presentación asíncrona var url = ""; var tables = $("#dataTable").dataTable({ serverSide: true,//Paginación, obtención de datos, etc., se colocan en el lado del servidor processing: true,//¿Se muestra "Cargando" al cargar los datos? pageLength: 10, //número de filas de datos cargados por primera vez ordering: false, //la operación de ordenamiento se realiza en el servidor, por lo que se puede desactivar. pagingType: "full_numbers", autoWidth: false, stateSave: true,//mantener el estado de paginación, y usarlo con comTable.fnDraw(false); searching: false,//deshabilitar la búsqueda de datatables ajax: { url: "<%=path%>/goodsType/getData", dataSrc: "data", data: function (d) { var param = {}; param.draw = d.draw; param.start = d.start; param.length = d.length; var formData = $("#queryForm").serializeArray();//secuencializar los datos del formulario en un array formData.forEach(function (e) { param[e.name] = e.value; }); return param;//parámetros personalizados a pasar. }, }, columns: [//corresponde a la secuencia en el thead superior {"data": null,"width":"10px"}, {"data": null}, {"data": 'typeNameCn' }, {"data": 'typeNameEn' }, {"data": 'createTime', "render":function(data,type,full,callback) { return data.substr(0,19) } }, {"data": 'updateTime', defaultContent: "", "render":function(data,type,full,callback) { if(data != null && data != ""){ return data.substr(0,19) }else{ return data; } } }, {"data": null,"width":"60px"} ], //botones de operación columnDefs: [ { targets: 0, defaultContent: "<input type='checkbox' name='checkList'>" }, { targets: -1, defaultContent: "<div class='btn-group'>"+ ""+ ""+ "
Código Java
Método de controlador, responsable de consultar los datos de la tabla de la página, devolver el formato JSON después de formatear.
@RequestMapping(value="/goodsType/getData", produces = "text/json;charset=UTF-8) @ResponseBody public String getData(HttpServletRequest request, QueryCondition query) { DatatablesView<GoodsType> dataTable = goodsTypeService.getGoodsTypeByCondition(query); dataTable.setDraw(query.getDraw()); String data = JSON.toJSONString(dataTable); return data; }
Devuelve el formato de datos JSON
{ "data": [{ "createTime": "2016-10-27 09:42:28.0", "typeId": 96824775296417986, "typeIdStr": "96824775296417986", "typeNameCn": "食品", "typeNameEn": "Foods", "updateTime": "2016-10-28 13:00:24.0" }, { "createTime": "2016-10-27 09:42:27.0", "typeId": 96824775296417979, "typeIdStr": "96824775296417979", "typeNameCn": "汽车", "typeNameEn": "Cars123", "updateTime": "2016-10-27 09:51:24.0" }], "draw": 1, "recordsFiltered": 17, "recordsTotal": 17 }
DatatablesView, definido según los requisitos de DataTables
public class DatatablesView<T> { private List<T> data; //data y datatales corresponden a "dataSrc" cargados private int recordsTotal; private int recordsFiltered; private int draw; public DatatablesView() { } public int getDraw() { return draw; } public void setDraw(int draw) { this.draw = draw; } public List<T> getData() { return data; } public void setData(List<T> data) { this.data = data; } public int getRecordsTotal() { return recordsTotal; } public void setRecordsTotal(int recordsTotal) { this.recordsTotal = recordsTotal; this.recordsFiltered = recordsTotal; } public int getRecordsFiltered() { return recordsFiltered; } public void setRecordsFiltered(int recordsFiltered) { this.recordsFiltered = recordsFiltered; } }
Clase de servicio de negocio,主要负责根据查询条件统计记录数量,查询当前页数据列表
public DatatablesView<GoodsType> getGoodsTypeByCondition(QueryCondition query) { DatatablesView<GoodsType> dataView = new DatatablesView<GoodsType>(); //Construir condiciones de búsqueda WherePrams where = goodsTypeDao.structureConditon(query); Long count = goodsTypeDao.count(where); List<GoodsType> list = goodsTypeDao.list(where); dataView.setRecordsTotal(count.intValue()); dataView.setData(list); return dataView; }
La capa Dao es la operación básica de consulta de base de datos, aquí se omite...
Final
Aquí se utiliza solo la búsqueda borrosa de palabras clave como condiciones de búsqueda, según las necesidades del negocio, se pueden agregar otras condiciones de búsqueda dinámicamente, y el servidor debe realizar el procesamiento correspondiente.
Lo mencionado anteriormente es lo que el editor les ha presentado basado en SpringMVC+Bootstrap+DataTables realiza la paginación del servidor de tablas y la búsqueda borrosa, espero que sea útil para todos, si tienen alguna pregunta, déjenme un mensaje, el editor responderá a tiempo.
Declaración: el contenido de este artículo se obtiene de la red, es propiedad del autor original, el contenido se contribuye y carga de manera autónoma por los usuarios de Internet, este sitio no posee los derechos de propiedad, no se ha realizado un procesamiento editorial humano y no asume la responsabilidad legal correspondiente. Si encuentra contenido sospechoso de infracción de derechos de autor, por favor envíe un correo electrónico a: notice#oldtoolbag.com (al enviar un correo electrónico, por favor reemplace # con @) para denunciar, y proporcione evidencia relevante. Una vez confirmado, este sitio eliminará inmediatamente el contenido sospechoso de infracción.