java web 分页详解2

看这篇博客之前,请先看我的前一篇博客:http://hw1287789687.iteye.com/blog/2113991

这篇主要讲解更好的分页方案.

先看一下效果:

检索条件有两个:"订单类别","医生",然后点击[查询]按钮,结果如下:
java web 分页详解2
 此时,我在检索条件的"登记人"输入"黄威",在点击[下一页].

点击[下一页]之前的界面:
java web 分页详解2
 点击[下一页]之后的页面:
java web 分页详解2
 有两点要注意:

(a)新增的查询条件"登记人"清空了.

(b)其他的查询条件是原来的(点击[查询]时的条件)

这就是我们需要的效果.

如何实现的呢?

(1)在页面pageBottom.jsp增加了表单,并且表单中还增加了请求要素pageFlag,用于区分查询和分页:
java web 分页详解2
 

<input type="hidden" name="pageFlag" value="not_query" >

(2)查询使用不同的表单

此时点击[查询]和[上一页]提交的是不同的表单,尽管提交的action是相同的.

点击[查询]时只提交检索条件,不提交分页信息.

点击[上一页]时不提交检索条件,只提交分页信息,那么从哪儿获取原来的查询条件呢?

session
java web 分页详解2
 

 

(3)分页时没有提交检索信息,那么如何恢复检索条件到分页之后的界面上呢?

从session获取原来的检索条件(存储在ToothOrders的对象中),然后使用org.apache.commons.beanutils.BeanUtils 把toothOrders中查询条件复制到OrdersView对象view中.

Java代码  java web 分页详解2
  1. try {  
  2.                 toothOrders2=toothOrders.clone();  
  3.                 BeanUtils.copyProperties(view, toothOrders2);  
  4.             } catch (CloneNotSupportedException e) {  
  5.                 e.printStackTrace();  
  6.             } catch (IllegalAccessException e) {  
  7.                 e.printStackTrace();  
  8.             } catch (InvocationTargetException e) {  
  9.                 e.printStackTrace();  
  10.             }  

可以参考我的上一篇博客:http://hw1287789687.iteye.com/blog/2113991 

 

ps:博客中使用的截图工具是:红蜻蜓抓图精灵
java web 分页详解2