文档章节

JFinal教程JfinalUIB 代码笔记 (9)--- JFinal分页存在的问题

littleant
 littleant
发布于 2016/03/30 15:42
字数 499
阅读 537
收藏 0

前段时间有位细心的网友跟我说JFinalUIB中的分页存在bug,我很疑惑,但是问题确实存在,调试一番,发现是JFinal的分页方法本身存在这个问题,下面就bug产生的原因和问题做下记录,给所有JFinal学习使用者一个提示和解决方法

我们以功能查询页面来测试

  1. 点击功能管理,进入功能列表,没有任何查询条件,显示所有数据

  2. 在查询条件中URL中输入“/jf/wx/keyword/view”,不点击查询按钮,而是选择跳转到第3页,分页参数是查询指定的URL并显示第3页数据

     

  3. 而数据本身只存在一条,第3页必然是空

  4. 点击查询按钮,是可以查出来这行数据的

  5. 作为前端页面,自己只负责数据的展示,是无法处理数据的查询验证的,也许传递的参数存在不合理的地方,但是后端要尽可能的屏蔽此类问题。分析完JFinalUIB自己的分页包装对象SplitPage后,发现问题不在于此,因为SplitPage也是并没有处理数据的查询验证,只是对JFinal的Page参数在外层进行了扩展封装,接着查看JFinal的分页源码,DbPro.java中的doPaginate方法

    如果当前页的页码大于总页数,返回空数据...

  6.  if (pageNumber > totalPage) {
       return new Page<Record>(new ArrayList<Record>(0), pageNumber, pageSize, totalPage, (int)totalRow);
      }

    应该这样来做,当前页的页码大于总页数时,当前页应该显示最大页的数据才合理,在我们这次测试中,也就是应该显示第1页数据,就不会返回空数据了

  7.  if (pageNumber > totalPage) {
       //return new Page<Record>(new ArrayList<Record>(0), pageNumber, pageSize, totalPage, (int)totalRow);
       pageNumber = totalPage; // 修复分页bug,这样会存在pageNumber过大导致空数据,非常不友好
      }

© 著作权归作者所有

littleant

littleant

粉丝 278
博文 13
码字总数 10514
作品 1
武汉
高级程序员
私信 提问
加载中

评论(3)

littleant
littleant 博主

引用来自“JFinal”的评论

当请求页号大于总号数量,如果总是返回最后一页的结果,在逻辑上不严谨,所以会出现一些后遗症。可以测试一下oschina对此问题的处理方式,这里是一最后一页的某个链接:http://www.oschina.net/question/tag/jfinal?catalog=$catalog&show=&p=90,手动将后面的参数p=90改成 p=91或者 p=0都不会显示任何数据,oschina在有些地方对于此类问是直接重定向到一个新的url
好的,波总,那位网友测试的太仔细了,之前一直没注意到这个问题
JFinal
JFinal
当请求页号大于总号数量,如果总是返回最后一页的结果,在逻辑上不严谨,所以会出现一些后遗症。可以测试一下oschina对此问题的处理方式,这里是一最后一页的某个链接:http://www.oschina.net/question/tag/jfinal?catalog=$catalog&show=&p=90,手动将后面的参数p=90改成 p=91或者 p=0都不会显示任何数据,oschina在有些地方对于此类问是直接重定向到一个新的url
JFinal
JFinal
当请求页号大于总号数量,如果总是返回最后一页的结果,在逻辑上不严谨,所以会出现一些后遗症。可以测试一下oschina对此问题的处理方式,这里是一最后一页的某个链接:http://www.oschina.net/question/tag/jfinal?catalog=$catalog&show=&p=90,手动将后面的参数p=90秘诀成 p=90或者 p=0都不会显示任何数据,oschina在有些地方对于此类问是直接重定向到一个新的url
基于JFinal实现的权限管理系统 JFinalUIB

项目用到了众多的开源组件,还有一些是网络分享的学习示例代码片段,感谢他们!!! JFinal高级学习交流QQ群:309647612 代码库地址:http://git.oschina.net/dongcb678/JfinalUIB.git 项目背景...

littleant
2014/06/03
20.8K
35
JFina教程JfinalUIB 代码笔记 (3)--- jfinal Controller参数封装

通常我们使用jfinal开发都会写自己的BaseController来做一些公共全局变量的声明,或者用来实现一些公共方法,JfinalUIB也不例外。 参数的封装主要是在ParamPkgInterceptor类中实现,采用的是...

littleant
2014/06/12
2.8K
5
最近在做的一件事件编写JFinal教程《Jfinal极速开发实战》

从8月1号开始,整整一个月,初稿完成,朋友帮我第一次文字校对完成,现在正在根据波总的意见修改一些jfinal的设计原则说明 Jfinal、JfinalUIB学习交流QQ群:309647612 已经完成,前四章免费阅...

littleant
2015/08/20
2.6K
12
jweb——修改自jfinaluib的java管理系统开发基础框架

项目地址: https://git.oschina.net/xjtweb/jweb.git 几点说明: 一、本工程修改自jfinaluib项目。 二、运行 a、设置jvm参数jweb.home指向工程的工作目录(目录内容参照本文件的同级目录的hom...

xiejuntao
2015/05/22
652
0
JFinal2.1中全局拦截器中配置多个事务规则时报错

@JFinal 你好,想跟你请教个问题: JFinal2.1中在Config中加入事务拦截时,从第三个事务规则开始报错,不能定义多个规则吗? 2.0好像没有报错。@JFinalUIB中就是这样配置的。 /** * 配置全局...

hypocrite11
2016/01/06
910
5

没有更多内容

加载失败,请刷新页面

加载更多

只需一步,在Spring Boot中统一Restful API返回值格式与统一处理异常

统一返回值 在前后端分离大行其道的今天,有一个统一的返回值格式不仅能使我们的接口看起来更漂亮,而且还可以使前端可以统一处理很多东西,避免很多问题的产生。 比较通用的返回值格式如下:...

晓月寒丶
昨天
59
0
区块链应用到供应链上的好处和实际案例

区块链可以解决供应链中的很多问题,例如记录以及追踪产品。那么使用区块链应用到各产品供应链上到底有什么好处?猎头悬赏平台解优人才网小编给大家做个简单的分享: 使用区块链的最突出的优...

猎头悬赏平台
昨天
28
0
全世界到底有多少软件开发人员?

埃文斯数据公司(Evans Data Corporation) 2019 最新的统计数据(原文)显示,2018 年全球共有 2300 万软件开发人员,预计到 2019 年底这个数字将达到 2640万,到 2023 年达到 2770万。 而来自...

红薯
昨天
65
0
Go 语言基础—— 通道(channel)

通过通信来共享内存(Java是通过共享内存来通信的) 定义 func service() string {time.Sleep(time.Millisecond * 50)return "Done"}func AsyncService() chan string {retCh := mak......

刘一草
昨天
58
0
Apache Flink 零基础入门(一):基础概念解析

Apache Flink 的定义、架构及原理 Apache Flink 是一个分布式大数据处理引擎,可对有限数据流和无限数据流进行有状态或无状态的计算,能够部署在各种集群环境,对各种规模大小的数据进行快速...

Vincent-Duan
昨天
60
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部