如果页面上存在一个按时间排序的记录列表,当我们增加了一条记录,应该跳转到记录的最后面,以看到刚刚增加的记录;当我们删除了一条记录,应该跳转到被删除记录的原来差不多的地方,以方便用户继续操作。
如果列表是分页的,那么增加记录后应该是跳到最后一页;对于删除记录,删除前应把当前页码记下,删除后跳转到 <b> Min(最后一页,删除前的页码) </b>
可以用 pager-taglib 来实现这两种机制。首先,它可以分页,可以让我们免于自己实现分页;其次,利用它分页后想跳转到某页只须在 url 里加上 pager.offset = 某页 即可,方便程序的实现。
具体的实现方法:
1.增加记录
a.用户提交“增加记录”的表单,表单域中需包含隐藏变量:“每页记录数”
b.服务器增加记录后,从数据库中算出记录的总数
c.利用每页记录数和记录总数算出最后一页的pager.offset值
d.跳转到该页
2.删除记录
a.用户提交“删除记录”的表单,表单域中需包含隐藏变量:“每页记录数”和“当前页码”
b.服务器删除记录后,从数据库中算出记录的总数
c.利用每页记录数和记录总数算出最后一页的pager.offset值
d.求出 最后一页的页码 和 删除前的页码 中间的较小值
e.跳转到这个较小值所代表的页面
DisplayTag为什么不行? 因为利用它分页后如果想跳到某页,在url里要加上的东西是不确定的,URL中它的分页参数名值对 有时是 d-48098-p = 某页, 有时是 d-23456-p =某页,中间的数字是随机生成的,程序无法处理。