displaytag external paging 第二种分页方法导

系统 1437 0

 

首先要感谢zuiyanwangyue提供给我的解决方法!!!
我是采用了displaytag提供的第二种分页方法

// 页数的参数名
String pageIndexName = new ParamEncoder(Constants.ABSENCE_LIST)
.encodeParameterName(TableTagParameters.PARAMETER_PAGE);
// 每页显示的条数
int pageSize = 15;
// 当前页
int pageIndex = GenericValidator.isBlankOrNull(request.getParameter(pageIndexName)) ? 0 : (Integer.parseInt(request.getParameter(pageIndexName)) - 1);

// 统计总记录数
int resultSize = (Integer) absMgr.getPypDepartmentAbsByTimesCount(condition[0], condition[1], condition[2]).get(0);
//获取导出的状态如果不为空.说明点击了导出按钮
String exportValue = request.getParameter(TableTagParameters.PARAMETER_EXPORTING);
if (exportValue == null || exportValue.equals("")) {
// 取得当前分页数据
studentAbsList = absMgr.getPypDepartmentAbsByTimesSql(pageIndex, pageSize, condition[0], condition[1], condition[2]);
}else {
//获取所有数据
studentAbsList = absMgr.fastGetDepAbs(condition);
}

//缺勤信息
request.setAttribute(Constants.ABSENCE_LIST, studentAbsList);


我觉得你说的问题可能和Displaytag的设计初衷有关,如果是一个特殊的列表,亦即table标签中的partialList="true",那么Table标签的处理类在进行初始化参数时(见TableTag的initParameters()方法),会做出相应的处理使得在页面上看到的数据和导出的数据条数是一样的,它并没有区别对待不同的媒体类型。

见TableTag的1065以及1066两行:
PaginationHelper paginationHelper = new PaginationHelper(pageNumber, pagesize);
this.tableIterator = paginationHelper.getIterator(this.list);

如果想要Displaytag适合你的要求恐怕就要修改Displaytag的源代码了,增加以下判断:
//检查当前的媒体类型
            if(MediaTypeEnum.HTML.equals(this.currentMediaType)){
            PaginationHelper paginationHelper = new PaginationHelper(pageNumber, pagesize);
                this.tableIterator = paginationHelper.getIterator(this.list);
            }else {
            this.tableIterator = IteratorUtils.getIterator(this.list);
            }
即如果是在页面上显示则进行分页,否则的话就遍历整个列表。
这样就应该满足你的要求了。

帮我解决此问题的人是zuiyanwangyue
一下是他的博客地址

http://zuiyanwangyue.iteye.com/

真的非常感谢他.因为本人还是学生...代码量不多.看了源代码3天了,还是一点头绪都没有.
今天收到zuiyanwangyue发来的消息.尝试改了一下源代码.结果行了.在这里再一次感谢zuiyanwangyue.谢谢!!!

displaytag external paging 第二种分页方法导出所有数据的问题


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论