张冲冲的gravatar头像
张冲冲 2017-09-20 17:12:09

关于分页后台出现参数错误

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ include file="./comm_checkuser.jsp" %>
<!DOCTYPE HTML>
<html>

	<head>
		<meta charset="utf-8">
		<meta name="renderer" content="webkit|ie-comp|ie-stand">
		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
		<meta http-equiv="Cache-Control" content="no-siteapp" />
		<link rel="stylesheet" type="text/css" href="../assets/static/h-ui/css/H-ui.min.css" />
		<link rel="stylesheet" type="text/css" href="../assets/static/h-ui.admin/css/H-ui.admin.css" />
		<link rel="stylesheet" type="text/css" href="../assets/lib/Hui-iconfont/1.0.8/iconfont.css" />
		<link rel="stylesheet" type="text/css" href="../assets/lib/icheck/skins/minimal/minimal.css" />
		<link rel="stylesheet" type="text/css" href="../assets/static/h-ui.admin/skin/default/skin.css" id="skin" />
		<link rel="stylesheet" type="text/css" href="../assets/lib/laypage/1.2/laypage.js"> 
		<link rel="stylesheet" type="text/css" href="../assets/static/h-ui.admin/css/style.css" />
		
		<title>用户信息</title>
	</head>

	<body>
		<nav class="breadcrumb">
			
			<a class="btn btn-success radius r" style="line-height:1.6em;margin-top:3px" href="javascript:location.replace(location.href);" title="刷新"><i class="Hui-iconfont">&#xe68f;</i></a>
		</nav>
		<div class="page-container">
			<div class="cl pd-5 bg-1 bk-gray mt-20">
				<div class="l">
				<a href="javascript:;" onclick="del(getDTSelect(), '/patientinfo/del/', reloadTable)" class="btn btn-danger radius"><i class="Hui-iconfont">&#xe6e2;</i> 批量删除</a>
					
					<a class="btn btn-primary radius" onclick="add('添加','addpatientinfo.jsp')" href="javascript:;"><i class="Hui-iconfont">&#xe600;</i> 添加</a>
				</div>
				<div class="r">
					<input type="text" id="search" placeholder="姓名或者身份证" style="width:250px" class="input-text">
					<button id="doSearch" class="btn btn-success" type="submit"><i class="Hui-iconfont">&#xe665;</i> 搜索</button>
				</div>
			</div>
			<div class="mt-20">
				<table class="table table-border table-bordered table-hover table-bg table-sort" width="100%">
					<thead>
						<tr class="text-c">
						
							<th><input id="input-0" type="checkbox" name="all"><label for="input-0"></label></th>
							<th>ID</th>
							<th>姓名</th>
							<th>性别</th>
							<th>出生日期</th>
							<th>省份证</th>
							<th>电话</th>
							<th>现居住地</th>
							<th>病人消费性质</th>
							<th>社保号</th>
							 <th>身高</th>
							<th>体重</th>
							<th>操作</th>
						</tr>
					</thead>
				</table>
			</div>
		</div>
		<script type="text/javascript" src="../assets/lib/jquery/1.9.1/jquery.min.js"></script>
		<script type="text/javascript" src="../assets/lib/layer/2.4/layer.js"></script>
		 <script type="text/javascript" src="../assets/lib/icheck/icheck.min.js"></script>
	 	<script type="text/javascript" src="../assets/lib/datatables/1.10.0/jquery.dataTables.min.js"></script>
		<script type="text/javascript" src="../assets/static/h-ui/js/H-ui.js"></script>
		<script type="text/javascript" src="../assets/static/h-ui.admin/js/H-ui.admin.js"></script>
		<script type="text/javascript"> var contextPath = "${pageContext.request.contextPath}";</script>
		<script type="text/javascript" src="../assets/lib/datatables/datatables.optimize.js"></script>
		<script type="text/javascript" src="../assets/pages/commandScript.js"></script>
	<script type="text/javascript" src="../assets/pages/patientinfo-list.js"></script>

	</body>
</html>

/**
 * DataTables
 */
var datatable = null,idList=[];

$(function() {
	datatable = $('.table-sort').DataTable({

		
		ajax: {
			url: contextPath + "/xxxx/getPageList",
			type: 'post',
			data: function(d) {
				d.search = $('#search').val();
			}
		},
		columns: [{
			data: "id"
		},{
			data: "id"
		}, {
			data: "username"
		}, {
			data: "usersex",
			defaultContent: ""
		}, 
		{
			data:"userbirth",
				defaultContent: ""
		},
		
		{
			data: "useridcard",
			defaultContent: ""
		}, {
			data: "userphone",
			defaultContent: ""
		}, {
			data: "useradress",
			defaultContent: ""
		}, {
			data: "userexpensetype",
			defaultContent: ""
		}, {
			data: "socialinsurancenumber",
			defaultContent: ""
		}, {
			data: "userhight",
			defaultContent: ""
		}, {
			data: "userweight",
				defaultContent: ""
		}],
		columnDefs: [{
			targets: [0],
			orderable:false,
			render: function(data, type, row, meta) {
				return '<input id="input-' + data + '" type="checkbox" name="single"><label for="input-' + data + '"></label>';
			}  
		}, {
			targets: [4],
			render: function(data, type, row, meta) {
				return data ? new Date(data).pattern("yyyy-MM-dd hh:mm:ss") : '';
			}
		}, {
			targets: [12],
			responsivePriority: 1,
			render: function(data, type, row, meta) {
				return '<a title="编辑" href="javascript:;" onclick="edit(\'菜单编辑\',\'addpatientinfo.jsp\',' + row.id + ',\'500\',\'480\')" style="text-decoration:none"><i class="Hui-iconfont">&#xe6df;</i></a>\
						<a title="删除" href="javascript:;" onclick="del([' + row.id + '],\'/patientinfo/del/\',reloadTable)" class="ml-5" style="text-decoration:none"><i class="Hui-iconfont">&#xe6e2;</i></a>';
			}
		}]
	});
});

/**
 * 刷新DT
 */
function reloadTable() {
	datatable.ajax.reload(true, true);
}

/**
 * 获取datatables选中行的ID
 */
function getDTSelect() {
	var lines = datatable.rows('.selected').data();
	for (var i = 0; i < lines.length; i++) {
		idList.push(lines[i].id);
	}
	return idList;
}
package com.ekz.comment.controller;

import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.ekz.comment.model.Patientinfo;
import com.ekz.comment.service.PatientinfoService;
import com.ekz.system.util.DataTables;
@Controller
@RequestMapping("/patientinfo")
public class PatientinfoController {
	
	
	@Autowired
	HttpServletRequest request;// 请求

	@Autowired
	private PatientinfoService service;
	
	/**
	 * 获取集合列表
	 * @return
	 */
	@RequestMapping(value = "/getPageList", method = RequestMethod.POST, produces = "application/json; charset=utf-8")
	@ResponseBody
	public String getPageList(){
		return JSON.toJSONString(service.getPageList(DataTables.getInstance(request, null)));
	}
	
}
package com.ekz.comment.service.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import com.ekz.comment.dao.PatientinfoMapper;
import com.ekz.comment.model.Patientinfo;
import com.ekz.comment.service.PatientinfoService;
import com.ekz.system.base.BaseService;
import com.ekz.system.util.DataTables;
import com.ekz.system.util.RequestStatus;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
@Service
public class PatientinfoServiceImpl extends BaseService implements PatientinfoService{
	@Autowired
	private PatientinfoMapper patientinfo;
	
	@Override
	public DataTables getPageList(DataTables dataTables) {
		PageHelper.startPage(dataTables.getStart(), dataTables.getLength()); // 核心分页代码 
		PageHelper.orderBy("id desc");
		
		if(!StringUtils.isEmpty(dataTables.getColumn())){
			String column = propertyToColumn(PatientinfoMapper.class, dataTables.getColumn());
			if(!StringUtils.isEmpty(column)){
				PageHelper.orderBy(column + " " + dataTables.getOrder());
			}
		}
		
		PageInfo<Patientinfo> pageInfo = new PageInfo<Patientinfo>(patientinfo.getPageList(dataTables.getSearch(), dataTables.getSubSQL()));
		dataTables.setRecordsTotal(pageInfo.getTotal());
		dataTables.setRecordsFiltered(pageInfo.getTotal());
		dataTables.setData(pageInfo.getList() != null ? pageInfo.getList() : new ArrayList<>());
		
		return dataTables;
	}

}
package com.ekz.system.util;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.springframework.util.StringUtils;

/**
 * datatables实体类,用于传递参数
 * 
 * 
 *
 */
public class DataTables implements java.io.Serializable {

	/**
	 * 版本
	 */
	private static final long serialVersionUID = -4352856640468897683L;
	private Integer start;// 起始行数
	private Integer length;// 页面大小
	private String search;// 搜索的字符串
	private String order;// 排序方式desc or asc
	private String column;//需要排序的列
	private long recordsTotal;// 数据库中的结果总行数
	private long recordsFiltered;// 搜索过滤后的行数
	private Integer draw; //datatables建议将此参数传回
	private List<?> data;// 结果集
	private String subSQL;//手动拼装的额外参数

	public DataTables() {};

	public DataTables(Integer start, String search, Integer length, String order, String column, Integer pageNum,
			Integer recordsTotal, Integer recordsFiltered, Integer draw, String subSQL) {
		this.start = start;
		this.length = length;
		this.search = search;
		this.order = order;
		this.draw = draw;
		this.column = column;
		this.recordsTotal = recordsTotal;
		this.recordsFiltered = recordsFiltered;
		this.setSubSQL(subSQL);
	}
	
	public DataTables(HttpServletRequest request, String subSQL){
		 length = StringUtils.isEmpty(request.getParameter("length"))?10:Integer.parseInt(request.getParameter("length"));
		 start = StringUtils.isEmpty(request.getParameter("start"))?0:Integer.parseInt(request.getParameter("start"));
		// length=0;
		 
		draw = StringUtils.isEmpty(request.getParameter("draw"))?0:Integer.parseInt(request.getParameter("draw"));
		search = StringUtils.isEmpty(request.getParameter("search"))?null:request.getParameter("search");
		order = request.getParameter("order[0][dir]");
		column = request.getParameter("columns["+request.getParameter("order[0][column]")+"][data]");
		this.setSubSQL(subSQL);
	}
	
	public static DataTables getInstance(HttpServletRequest request, String subSQL){
		return new DataTables(request, subSQL);
	};

	public Integer getStart() {
		return start;
	}

	public void setStart(Integer start) {
		this.start = start;
	}

	public String getSearch() {
		return search;
	}

	public void setSearch(String search) {
		this.search = search;
	}

	public Integer getLength() {
		return length;
	}

	public void setLength(Integer length) {
		this.length = length;
	}

	public String getOrder() {
		return order;
	}

	public void setOrder(String order) {
		this.order = order;
	}
	
	public List<?> getData() {
		return data;
	}

	public void setData(List<?> data) {
		this.data = data;
	}

	public Integer getDraw() {
		return draw;
	}

	public void setDraw(Integer draw) {
		this.draw = draw;
	}

	public long getRecordsTotal() {
		return recordsTotal;
	}

	public void setRecordsTotal(long recordsTotal) {
		this.recordsTotal = recordsTotal;
	}

	public long getRecordsFiltered() {
		return recordsFiltered;
	}

	public void setRecordsFiltered(long recordsFiltered) {
		this.recordsFiltered = recordsFiltered;
	}

	public String getColumn() {
		return column;
	}

	public void setColumn(String column) {
		this.column = column;
	}

	public String getSubSQL() {
		return subSQL;
	}

	public void setSubSQL(String subSQL) {
		this.subSQL = subSQL;
	}
}
<select id="getPageList" resultMap="BaseResultMap">
			SELECT
			 ID, 
			 UserName, 
			 UserSex, 
			 UserIDCard, 
			 UserExpenseType, 
			 SocialInsuranceNumber, 
			 UserPhone, 
			 DATE_FORMAT(UserBirthday,'%Y-%m-%d %h:%i:%s') AS UserBirthday,
			 UserAdress, 
			 UserHight, 
			 UserWeight, 
			 age,
			 age_unit, 
			 inpatient_no, 
			 occupation, 
			 marry, 
			 blood, 
			 patient_id
		FROM patientinfo
		<where>
			
			<if test="subSQL != null and subSQL !='' ">
				${subSQL}
			</if>
			<if test="search != null and search !=''">
				INSTR(ifnull(UserName,''),'${search}') > 0 or
				
				INSTR(ifnull(useridcard,''),'${search}') > 0
			</if>
		</where>
	</select>
  

关于分页后台出现参数错误关于分页后台出现参数错误

所有回答列表(3)
王庆乾wdq的gravatar头像
王庆乾wdq  LV13 2017年9月24日

一个分页叫你写这么麻烦    不值得

评论(1) 最佳答案
kisn888的gravatar头像
kisn888  LV14 2017年9月21日

首先看到这个问题,觉得90可能是10*(10-1)获得,因为我以前没有使用过datatables,因此觉得start可能是当前页码值减1,然后翻了一下datatables的API,也没有start这个属性,但是在这篇文章看到一个信息

http://blog.csdn.net/tomcat_2014/article/details/50177645

因此猜测,你的start可能传递的是页码值

Smail_的gravatar头像
Smail_  LV19 2017年9月27日

PageHelper.startPage(dataTables.getPageNum(), dataTables.getLength()); // 核心分页代码 
		PageHelper.orderBy("id desc");
		
		if(!StringUtils.isEmpty(dataTables.getColumn())){
			String column = propertyToColumn(CategoryMapper.class, dataTables.getColumn());
			if(!StringUtils.isEmpty(column)){
				PageHelper.orderBy(column + " " + dataTables.getOrder());
			}
		}

这是我程序的一个BUG!

PageHelper.startPage(dataTables.getPageNum(), dataTables.getLength()); // 核心分页代码 
		PageHelper.orderBy("id desc");

这里只能传pageNum,不能传start!

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友