displaytag页码超出实际时的问题

项目中用到了displaytag1.2,用来做分页,
jsp代码<display:column>标签中又用到了其他的Struts标签来显示数据。
结果当提交的页码大于实际页码时,页面数据显示出了问题。
像<display:column title="ID" property="id" class="colid" />这样的数据可以显示
而包含在<display:column>标签中的Struts标签数据无法显示。
百般无奈的情况下,查看displaytag源代码,发现TableTag.java中的initParameters函数存在如下代码:


// can we actually skip any row?
if (wishOptimizedIteration && (this.list instanceof Collection) // we need to know the size
&& ((sortColumn == -1 // and we are not sorting
|| !finalSortFull // or we are sorting with the "page" behaviour
) && (this.currentMediaType == MediaTypeEnum.HTML // and we are not exporting
|| !this.properties.getExportFullList()) // or we are exporting a single page
))
{
int start = 0;
int end = 0;
if (this.offset > 0)
{
start = this.offset;
}
if (length > 0)
{
end = start + this.length;
}

if (this.pagesize > 0)
{
int fullSize = ((Collection< ? >) this.list).size();
start = (this.pageNumber - 1) * this.pagesize;

// invalid page requested, go back to last page
if (start > fullSize)
{
int div = fullSize / this.pagesize;
start = (fullSize % this.pagesize == 0) ? div : div + 1;
}

end = start + this.pagesize;
}

// rowNumber starts from 1
filteredRows = new LongRange(start + 1, end);
}
else
{
filteredRows = new LongRange(1, Long.MAX_VALUE);
}



仔细看下来,下面这段有问题

// invalid page requested, go back to last page
if (start > fullSize)
{
int div = fullSize / this.pagesize;
start = (fullSize % this.pagesize == 0) ? div : div + 1;
}



想找最新的displaytag包,但是看官网给人的感觉是不再更新了。
只能自己把jar包解压缩了,替换了TableTag.class,然后再打包成jar包,正常。
改了他们的类,希望他们不要告我。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值