在若依框架中都自带分页组件方法startPage(),
进入源码可以看到
/** * 设置请求分页数据 */ public static void startPage() { PageDomain pageDomain = TableSupport.buildPageRequest(); Integer pageNum = pageDomain.getPageNum(); Integer pageSize = pageDomain.getPageSize(); String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy()); Boolean reasonable = pageDomain.getReasonable(); PageHelper.startPage(pageNum, pageSize, orderBy).setReasonable(reasonable); }
方法TableSupport.buildPageRequest();获取请求头中的pageNum和pageSize
源码如下:public static PageDomain getPageDomain() { PageDomain pageDomain = new PageDomain(); pageDomain.setPageNum(Convert.toInt(ServletUtils.getParameter(PAGE_NUM), 1)); pageDomain.setPageSize(Convert.toInt(ServletUtils.getParameter(PAGE_SIZE), 10)); pageDomain.setOrderByColumn(ServletUtils.getParameter(ORDER_BY_COLUMN)); pageDomain.setIsAsc(ServletUtils.getParameter(IS_ASC)); pageDomain.setReasonable(ServletUtils.getParameterToBool(REASONABLE)); return pageDomain; }
方法 pageDomain.setPageNum(Convert.toInt(ServletUtils.getParameter(PAGE_NUM), 1));
首先是set方法,后面的Convert.tolnt是判断能否获取到常量PAGE_NUM=pageNum的值则给默认值1,获取到值赋值获取到的值是从请求头中获取参数。(获取表单中的参数)一定是请求头(中要的事情说两遍)所以在使用默认方法时必须是get请求。或者是post请求分页参数必须在请求头中
public static String getParameter(String name) { return getRequest().getParameter(name); }
return getRequest().getParameter(name); getParameter(String name)获取客户端提交的数据,参数name就是客户端在form表单中书写name属性的值,如果不一致,则取不到对应的值 扩展:getParameterName() 获取客户端提交的 数据中所有的key值(form表单中提交的所有的name属性的值)
getParameterValues(String name) 获取form表单中用户提交的某个name属性对应的多个value属性的值
request属于域对象,所以可以使用域对象方法
域对象其实就是一个类似于map的容器,可以向容器中存入指定的值,在需要的时候,可以通过key去获取对应的值来使用
setAttribute(String name,Object o) 向一个request域中存放一个映射关系,name留着取值时使用的
getAttribute(String name) 通过映射关系的key,获取对应的值。
removeAttribute(String name) 通过映射关系的key,移除这一关系
setCharacterEncoding(String env) 设置客户端提交数据解码时使用的编码表,只对post请求有效
getRequestDispatcher(String path) 获取转发器对象,调用forward()方法用于转发请求
getMethod() 获取客户端提交数据的方式 get 或post 方式
自定方法:模仿方法 PageHelper.startPage(pageNum,pageSize,orderBy).setReasonable(reasonable);在传参的顶级父类中定义分页参数进行手动传入即可