天天看点

pager-taglib分页的使用

${pageUrl}这是pager-taglib定义的el表达式...表示为url="访问页面的url地址"加上<pg:param name="method" value="search"/>形成的访问地址.

pg:pager【这个标签用来设置分页的总体参数】重要参数说明:

url:分页的链接根地址,pager标签会在这个链接的基础上附加分页参数

items:总记录数,pager标签正是根据这个值来计算分页参数的

maxPageItems:每页显示的行数,默认为10

maxIndexPages:在循环输出页码的时候,最大输出多少个页码,默认是10

pg:first【第一页的标签】重要参数说明:

export变量的意义:

pageUrl - 分页链接URL地址(最重要的export参数)

pageNumber - 页码

firstItem - 首页第一行的索引值

lastItem - 首页最后一行的索引值

pg:pre【上一页标签】重要参数说明:

export变量的意义:

pageUrl - 分页链接URL地址(最重要的export参数)

pageNumber - 页码

firstItem - 前页第一行的索引值

lastItem - 前页最后一行的索引值

pg:next【下一页标签】重要参数说明:

export变量的意义:

pageUrl - 分页链接URL地址(最重要的export参数)

pageNumber - 页码

firstItem - 下页第一行的索引值

lastItem - 下页最后一行的索引值

pg:last重要参数说明:

export变量的意义:

pageUrl - 分页链接URL地址(最重要的export参数)

pageNumber - 页码

firstItem - 尾页第一行的索引值

lastItem - 尾页最后一行的索引值

pg:pages【这个标签用来循环输出页码信息】重要参数说明:

export变量的意义:

pageUrl - 分页链接URL地址(最重要的export参数)

pageNumber - 页码

firstItem - pageNumber这个页码指定的那一页的第一行的索引值

lastItem - pageNumber这个页码指定的那一页的最后一行的索引值

这时候可能还有疑问.那页面中怎么知道他访问是第几页和每页显示多少数据量.

这里我们可以使用一个过滤类进行过滤:PagerFilter.java

从上面可以看到使用了SystemContext这里类.这个是自己写的一个利用threadLocal模式的.为防止一些数据的重复

最后在web.xml中配置上过滤器

而在使用当中查询时候遇到中文查询时候将会出现乱码的问题.这里需要进行对源码进行一些修改:

第一:在下载源码后找到PagerTag.java这里类中addParam方法将

value = java.net.URLEncoder.encode(value,"UTF-8");--添加一个"UTF-8"的转换形式.

.第二:在传输数据当中.需要将你传输的数据进行URLEncoder.encode(data)加密.如下:

[color=red]<pg:param name="method" value="<%URLEncoder.encode(request.getAtrribute("xxx"))%>"/>[/color]

然后在获取数据的时候再进行解码.这样子就防止传输中文的时候出现中文乱码的问题.

xxx = URLDecoder.decode(request.getAtrribute("xxx"));//解码.再操作

这只是使用到的一些功能.还有许多操作是没有使用到的也需要学习.

总的来说这个分页比较方便使用.而还存在点问题.扩展性好像也不咋样.正在看其源码希望可以写个好用的

下一篇大概会讨论下jstl自定义jstl标签和函数

继续阅读