泥巴麒麟的BLOG

shenAwesome@hotmail.com 纵不能,将醉做生涯,休拘束

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  195 Posts :: 2 Stories :: 80 Comments :: 0 Trackbacks

displaytag确实有性能的问题,最近又看到一个比较好的分页列表控件,但同样是每次分页就重新提交整个页面
确实头痛而且笨拙。真的不如用ajax来处理这个问题

如做一个tag,页面上有:
<s:list  columnMap="" request=""/>
生成javascript的列表,完成后,立刻用ajax调用request中的请求,去得到列表值,显示出来
同时界面提供 上一页下一页等翻页和排序按钮,当按钮被点击,同样去用ajax重取数据

有两种方式
1 请求通过一个servlet通过反射转发到原始Action的方法上。
在action中,除了一般的工作,另加若干如下方法:
Collection showList(httpRequest request);
对应界面中的一个列表,专门负责处理列表。根据request里的信息(包括分页和排序信息)返回适当的数据
2 直接新建一个单独action处理

有关分页的计算,这里就不详述,无非是获得记录总数,从而计算出当前页,并取得相应数据。这里随后台不同而有不同实现。

当取数据的时候,由于ajax的异步性质,最好在界面上有些进度条之类的提示。

这样整体方案其实并不复杂。美工上作漂亮些就行了,再支持一下数据导出。

要提到的是,分页的情况,如果数据不一次全部取出,而是利用数据库的 order by等来进行分页排序,效率确实提高,但就需要穿透逻辑层,同时排序字段必须是数据库sql中的原始字段。
在逻辑层&DAO的处理上必须更仔细,推荐采用一个PageBean携带所有的分页信息( 查询条件,排序字段/顺序,当前页数,总页数)  。

 

 

 

posted on 2007-03-13 10:27 泥巴麒麟 阅读(171) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: