最近因为项目需要,所以想把原来使用的displaytag1.0升级为displaytag1.1,其实升级的原因很简单,1.0实在是太傻了,每次分页还需要将所有数据一次载入,效率低到无法忍受:)
1.1版最大的改进可以说是终于支持了大家期待以久的分次加载功能了,想显示多少数据就载入多少数据.1.1版本支持两种方式的分页,第一种是实现其org.displaytag.pagination.PaginatedList
接口,第二种是在页面和后台同时做修改来实现分页功能.在网上关于第二种分页的使用方法介绍的非常多,而且官方文档上面写的也比较详细,所以在这里我主要介绍自己是如何使用第一种方式进行分页的,且这种方式也是官方推荐分页方式(自己摸索的,呵呵,不好不要见怪)
首先写一个此接口的实现类
/**
* PaginatedListImpl
* User:shrek_xu
* Date: 2006-5-30
* Time: 20:35:18
*
*totalNum 所有条目数目
*currentPage 当前所在页号
*objectsPerPage 每页显示条数
* list 此页所需要显示的数据
*/
public class PaginatedListHelper implements PaginatedList{
private List list;
private int pageNumber = 1;
private int objectsPerPage = 20;
private int fullListSize = 0;
private String sortCriterion;
private SortOrderEnum sortDirection;
private String searchId;
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public int getPageNumber() {
return pageNumber;
}
public void setPageNumber(int pageNumber) {
this.pageNumber = pageNumber;
}
public int getObjectsPerPage() {
return objectsPerPage;
}
public void setObjectsPerPage(int objectsPerPage) {
this.objectsPerPage = objectsPerPage;
}
public int getFullListSize() {
return fullListSize;
}
public void setFullListSize(int fullListSize) {
this.fullListSize = fullListSize;
}
public String getSortCriterion() {
return sortCriterion;
}
public void setSortCriterion(String sortCriterion) {
this.sortCriterion = sortCriterion;
}
public SortOrderEnum getSortDirection() {
return sortDirection;
}
public void setSortDirection(SortOrderEnum sortDirection) {
this.sortDirection = sortDirection;
}
public String getSearchId() {
return searchId;
}
public void setSearchId(String searchId) {
this.searchId = searchId;
}
}
然后在使用的时候只需要创建此类的一个实例,且将所需要的参数通过set方法赋值进去就可以了
int page;
/*
*其中request中的page参数为displaytag中的默认当前页数,当然也可以使用*TableTagParameters.SORT_AMOUNT_PAGE来表示当前页数
*/
if(request.getParameter("page")!=null && !"".equals(request.getParameter("page"))){
page=Integer.parseInt(request.getParameter("page"));
}else{
page=1;
}
PaginatedList paginaredList=new PaginatedListHelper();
paginaredList.setPageNumber(page);
// 此页要显示的list数据
List list=.......;
paginaredList.setList(list);
// 总共有多少数据,他会根据所有数目和每页数目自动统计页数
paginaredList.setFullListSize(...);
// 如果你只设定这几个参数,那么其余的参数将会默认为你实现类中所赋的初值
最后,你还需要将这个实例放入到request或session中去,好让displaytag知道这个是外部分页
request.setAttribute("pageList",paginaredList);
在前台只需象下面这样写就可以了
<display:table name="${pageList}" id="list" requestURI="">
<display:column property="id"/>
</display:table>
最开始我对每次都要传入总共有多少条数据表示疑问,认为这个没有必要,只需要第一次传入就可以了,但是后来仔细想想,因为整个分页过程是动态的,所以,很有可能在你翻页的同时,原来的数据已经发生了变化,所以每次传入总数目是很有必要的
相关推荐
基于DisplayTag的分页及属性定制
displaytag.rar java数据分页驱动 java 数据分页 驱动
Displaytag实现分页
DisplayTag分页及属性
displaytag 一个后台管理的分页组件,非常好用,代码量少
该文档里面详细说明在我们使用displaytag标签的时候,在表格的页脚显示一个当前界面显示多少条的动态改变(这个是和[第1-10项 共19项] [首页/上页]1, 2[下页/尾页] [显示条数]显示在一行的),table会根据当前选择的数据...
NULL 博文链接:https://wooden-baby.iteye.com/blog/494060
DisplayTag是个很好的jsp标签,目前最新版本为1.2,支持了自定义分页,解决了之前版本每次查询都把全部数据查出的低效率做法。但是DisplayTag默认是通过url传参,以及分页导航不灵活给人们带来了不少麻烦。鉴于此...
display tag 分页例子的源代码。 博文链接:https://zhou568xiao.iteye.com/blog/192366
基于DisplayTag的分页方案
displaytag,pager-taglib 分页包 和源文件
改装后的displayTag分页插件,解决中文问题,内置帮助文档和示例文件及jar包,比较好用,如果不满足你的需求请不要砸砖 补充: csdn附件不能修改,jsp+servlet分页时有bug,请注意查询所有的serlvet不支持带参数,即...
Struts2整合DisplayTag 实现分页技术
displaytag分页模版资料非常详细 displaytag分页模版资料非常详细 displaytag分页模版资料非常详细
displaytag1.1显示排序分页导出自动标签
displaytag的数据库分页(也叫外部分页)说明,东西很全,内容详细。包括:displaytag的jar包,配置文件,SSH项目分页源码,分页说明文档(包括使用displaytag和未使用),数据库备份,readme文件。手把手教你实现,...
本人亲自用jsp的方式开发的一个完整的增删改查的小系统,遵循MVC架构,并且实现了模糊查询和用displaytag进行了分页,对输入垃圾字符进行了过滤处理,包含完整的代码注释,并且自带了Mysql的数据库脚本,很适合新手...
Struts2结合DisplayTag框架进行分页案例 有建表脚本 适合初学者
DisplayTag是个很好的jsp标签,目前最新版本为1.2,支持了自定义分页,解决了之前版本每次查询都把全部数据查出的低效率做法。但是DisplayTag默认是通过url传参,以及分页导航不灵活给人们带来了不少麻烦。鉴于此...