看这篇博客之前,请先看我的前一篇博客:http://hw1287789687.iteye.com/blog/2113991
这篇主要讲解更好的分页方案.
先看一下效果:
检索条件有两个:"订单类别","医生",然后点击[查询]按钮,结果如下:
此时,我在检索条件的"登记人"输入"黄威",在点击[下一页].
点击[下一页]之前的界面:
点击[下一页]之后的页面:
有两点要注意:
(a)新增的查询条件"登记人"清空了.
(b)其他的查询条件是原来的(点击[查询]时的条件)
这就是我们需要的效果.
如何实现的呢?
(1)在页面pageBottom.jsp增加了表单,并且表单中还增加了请求要素pageFlag,用于区分查询和分页:
<input type="hidden" name="pageFlag" value="not_query" >
(2)查询使用不同的表单
此时点击[查询]和[上一页]提交的是不同的表单,尽管提交的action是相同的.
点击[查询]时只提交检索条件,不提交分页信息.
点击[上一页]时不提交检索条件,只提交分页信息,那么从哪儿获取原来的查询条件呢?
session
(3)分页时没有提交检索信息,那么如何恢复检索条件到分页之后的界面上呢?
从session获取原来的检索条件(存储在ToothOrders的对象中),然后使用org.apache.commons.beanutils.BeanUtils 把toothOrders中查询条件复制到OrdersView对象view中.
- try {
- toothOrders2=toothOrders.clone();
- BeanUtils.copyProperties(view, toothOrders2);
- } catch (CloneNotSupportedException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- } catch (InvocationTargetException e) {
- e.printStackTrace();
- }
可以参考我的上一篇博客:http://hw1287789687.iteye.com/blog/2113991
ps:博客中使用的截图工具是:红蜻蜓抓图精灵