pagertaglib分页处理的使用文档格式.docx
- 文档编号:5746406
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:21
- 大小:20.51KB
pagertaglib分页处理的使用文档格式.docx
《pagertaglib分页处理的使用文档格式.docx》由会员分享,可在线阅读,更多相关《pagertaglib分页处理的使用文档格式.docx(21页珍藏版)》请在冰点文库上搜索。
viewplaincopy
1.<
span
style="
font-size:
18px"
>
<
%@taglibprefix="
pg"
uri="
2.
3.<
%@
taglib
prefix="
c"
%>
/span>
2、使用标签布置页面:
pager
url="
org.do"
items="
${pm.total}"
export="
currentPageNumber=pageNumber"
3.
paramnamepg:
paramname="
parentId"
/>
4.
5.
first>
6.
7.
ahrefahref="
${pageUrl}"
首页<
/a>
8.
9.
/pg:
10.
11.
prev>
12.
13.
${pageUrl
}"
前页<
14.
15.
16.
17.
pages>
18.
19.
c:
choose>
20.
21.
whentestc:
whentest="
${currentPageNumber
eq
pageNumber
22.
23.
fontcolorfontcolor="
red"
${pageNumber
}<
/font>
24.
25.
/c:
when>
26.
27.
otherwise>
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
next>
38.
39.
后页<
40.
41.
42.
43.
last>
44.
45.
尾页<
46.
47.
48.
49.<
pager>
需要注意的是:
很多时候,在不同的页面中跳转的时候,需要传递一个id,在保持这个数据的时候,不能直接跟在url后面,需要使用<
paramname="
来传递。
为了给当前页添加一些特殊的效果,使用currentPageNumber给pageNumber指定了一个别名,这是为了test="
${currentPageNumbereqpageNumber}判断的需要。
Items表示:
返回来的总记录数,由此,该框架采用的是假分页。
url:
指明了请求的入口地址,是与struts的配置文件struts-config.xml中的配置相关联。
3、设置offset和pagesize变量的值:
比较好的做法是在系统变量类中,将其设置到ThreadLocal变量中。
这里将其封装到了SystemContext类中:
[java]
public
class
SystemContext
{
privatestatic
ThreadLocal
offset
=
new
ThreadLocal();
pagesize
publicstatic
int
getOffset(){
Integeros
(Integer)offset.get();
if(os==
null){
return0;
}
returnos;
void
setOffset(int
offsetvalue){
offset.set(offsetvalue);
removeOffset(){
offset.remove();
getPagesize(){
Integerps
(Integer)pagesize.get();
if(ps==
returnInteger.MAX_VALUE;
returnps;
setPagesize(int
pagesizevalue){
49.
pagesize.set(pagesizevalue);
50.
51.
52.
53.
removePagesize(){
54.
55.
pagesize.remove();
56.
57.
58.
59.}<
4、定义分页过滤器PagerFilter:
该过滤器调用SystemContext类的方法,给offset和pagesize变量赋值。
publicclass
PagerFilter
implements
Filter
@Override
publicvoid
destroy()
doFilter(ServletRequest
request,
ServletResponseresponse,
FilterChain
chain)
throws
IOException,
ServletException{
HttpServletRequest
httpRequest
(HttpServletRequest)request;
SystemContext.setOffset(getOffset(httpRequest));
SystemContext.setPagesize(getPagesize(httpRequest));
try{
chain.doFilter(request,
response);
}finally{
//清空ThreadLocal中的值
SystemContext.removeOffset();
SystemContext.removePagesize();
protectedint
getOffset(HttpServletRequest
request){
0;
try
Integer.parseInt(request.getParameter("
pager.offset"
));
catch
(NumberFormatException
ignore)
return
offset;
getPagesize(HttpServletRequest
59.
60.
10;
61.
62.
63.
64.
65.
66.
init(FilterConfig
arg0)
ServletException
67.
68.
69.
70.}<
offset=Integer.parseInt(request.getParameter("
中的参数是固定的。
5、将过滤器配置到web.xml文件中,使之生效:
filter>
filter-name>
pagerFilter<
/filter-name>
filter-class>
com.bjsxt.oa.web.PagerFilter<
/filter-class>
/filter>
filter-mapping>
url-pattern>
/*<
/url-pattern>
/filter-mapping>
6、定义封装不同实体类数据的分页类PagerModel:
该类使用List封装了返回的不同实体类型。
这里如果使用泛型,可以在编程的时候检查类型及早给出提示,不使用也是可以的,根据个人的编程习惯吧。
1.publicclass
PagerModel{
/**
*
总记录数
*/
privateinttotal;
当前页结果集
private
List
datas;
getDatas()
returndatas;
setDatas(List
datas)
this.datas
publicint
getTotal()
returntotal;
setTotal(int
total)
this.total
total;
49.}
7、抽象分页服务类AbstractManager:
在业务逻辑的实现类中,只是传入的查询语句和参数不同,所以,可以对这个变化的部分抽象。
AbstractManager
extends
HibernateDaoSupport
私有的给查询语句赋值的方法
@param
query
hql
params
setParams(Query
query,String
hql,Object[]
params){
if(params!
=null
&
params.length>
0){
for(int
i
=0;
i<
params.length;
i++){
query.setParameter(i,
params[i]);
//*****************************************分页公共方法开始*****************************************
PagerModel
searchPaginated(String
hql){
searchPaginated(hql,null,SystemContext.getOffset(),SystemContext.getPagesize());
hql,Object
param){
searchPaginated(hql,new
Object[]{param},SystemContext.getOffset(),SystemContext.getPagesize());
searchPaginated(hql,params,SystemContext.getOffset(),SystemContext.getPagesize());
hql,int
offset,int
pagesize){
searchPaginated(hql,null,offset,pagesize);
obj,int
Object[]{obj},offset,pagesize);
70.
71.
72.
根据HQL语句进行分页查询
73.
74.
HQL语句
75.
76.
HQL语句带的多个参数值
77.
78.
从第几条记录开始查询
79.
80.
每页显示多少行
81.
82.
@return
83.
84.
85.
params,int
86.
87.
88.
//获取记录总数
89.
90.
String
countHql
getCountQuery(hql);
91.
92.
Query
getSession().createQuery(countHql);
93.
94.
if(params
!
null
params.length
95.
96.
i=0;
97.
98.
query.setParamete
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- pagertaglib 分页 处理 使用