page-taglib标签结合SSH框架进行java分页

    page-taglib是java中用于分页的框架,框架中各种标签的使用是的java分页变得更加简单,我们以一个简单的例子讲解page-taglib中的各种标签的含义,然后综合使用完成机构管理中的分页。

   首先需要搭建环境:

 1、将pager-taglib-2.0.jar拷贝到lib目录下。

 2、在jsp页面中引入标签库:

      <%@taglibprefix="pg" uri="http://jsptags.com/tags/navigation/pager"%>

 3、 采用标签方式对页面进行布局设计:

<pg:pager items="1001" export="currentPageNumber=pageNumber"><!-- export对pageNumber的重命名 -->
	<pg:first>
		<a href="${pageUrl }">首页</a>
	</pg:first>
	<pg:prev>
		<a href="${pageUrl }">前页</a>
	</pg:prev>
	<pg:pages>
		<c:choose>
			<c:when test="${currentPageNumber eq pageNumber }">
			<font color="red">${pageNumber }</font>
			</c:when>
			<c:otherwise>
				<a href="${pageUrl }">${pageNumber }</a>
			</c:otherwise>
		</c:choose>	
	</pg:pages>
	<pg:next>
		<a href="${pageUrl }">后页</a>
	</pg:next>
	<pg:last>
		<a href="${pageUrl }">尾页</a>
	</pg:last>
</pg:pager>

   结合上面的代码,我们分析标签的含义:

<pg:pager>标签:设置分页的总体参数,items为总记录数,pager标签正是根据这个值来计算分页参数。

<pg:first>标签:表示首页,pageUrl - 分页链接URL地址(最重要的export参数)。

<pg:prev>标签:表示上一页。

<pg:next>标签:表示下一页。

<pg:last>标签:表示最后一页。

<pg:pages>标签:表示循环输出页码信息,在这里用jstl标签表示选中的页码为当前页,并显示红色。

下面结合OA中机构管理中的分页,分析采用Page-taglib框架是如何进行分页的。

  1、搭建环境:拷贝pager-taglib-2.0.jar到lib目录下

  2、因为在分页中需要返回一个实体PageModel,这个实体包括了总的记录数和当前页所具有的结果集,

package com.bjsxt.oa;

import java.util.List;

public class PageModel {
	/**
	 * 总记录数
	 */
	private int total;
	public int getTotal() {
		return total;
	}
	public void setTotal(int total) {
		this.total = total;
	}
	public List getDatas() {
		return datas;
	}
	public void setDatas(List datas) {
		this.datas = datas;
	}
	/**
	 * 当前页结果集
	 */
	private List datas;
	
}

  3、在OrgAction中继承了DispatchAction类,如果没有指定method 方法,那么action 自动匹配到 unspecified 这个函数,所以我们在ActionForward的unspecified中编写代码,获得offset和pagesize两个参数。

<span style="white-space:pre">	</span>OrgActionForm oaf=(OrgActionForm)form;
		
	int offset=0;
	try {
		offset=Integer.parseInt(request.getParameter("pager.offset"));
	} catch (Exception ignore) {
	}
	int pagesize=10;//默认情况下为10
		
	//TODO:获取机构类别,并传递到界面
	request.setAttribute("pm",
				orgManager.findOrgs(oaf.getParentId(),offset,pagesize)
		<span style="white-space:pre">	</span>);

  4、在OrgManagerImpl实现类中:

	String selectCountHql="select count(*) from Orgnization o where o.parent is null";
	if(parentId!=0){
		selectCountHql="select count(*) from Orgnization o where o.parent.id="+parentId;
	}
	//获得总的记录数
	int total=((Long)getSession().createQuery(selectCountHql).uniqueResult()).intValue();
	//查询当前页的数据
	String selectHql="select o from Orgnization o where o.parent is null";
	if(parentId!=0){
		selectHql="select o from Orgnization o where o.parent.id="+parentId;
	}
	//取得当前页的数据
	List datas=getSession().createQuery(selectHql)
					.setFirstResult(offset)
					.setMaxResults(pagesize)
					.list();
<span style="white-space:pre">	</span>//将查询结果赋给一个实体返回
	PageModel pm=new PageModel();
	pm.setTotal(total);
	pm.setDatas(datas);
	return pm;

   其中返回的结果采用List集合表示,setFirstResult(offset)表示选择的页面页数,setMaxResults(pagesize)表示每页的数据量。

 5、在jsp中引入标签库:

     <%@taglibprefix="pg" uri="http://jsptags.com/tags/navigation/pager"%>

 6、采用标签布置页码:

<pg:pager url="org.do" items="${pm.total }" export="currentPageNumber=pageNumber"><!-- export对pageNumber的重命名 -->
	<pg:param name="parentId"/>
	<pg:first>
		<a href="${pageUrl }">首页</a>
	</pg:first>
	<pg:prev>
		<a href="${pageUrl }">前页</a>
	</pg:prev>
	<pg:pages>
		<c:choose>
			<c:when test="${currentPageNumber eq pageNumber }">
			<font color="red">${pageNumber }</font>
			</c:when>
			<c:otherwise>
				<a href="${pageUrl }">${pageNumber }</a>
			</c:otherwise>
		</c:choose>	
	</pg:pages>
	<pg:next>
		<a href="${pageUrl }">后页</a>
	</pg:next>
	<pg:last>
		<a href="${pageUrl }">尾页</a>
	</pg:last>
</pg:pager>  

    在<pg:pager>标签中,url表示分页的链接根地址,指明了请求的入口地址,是与struts的配置文件struts-config.xml中的配置相关联。

    pager标签会在这个链接的基础上添加分页参数。Items表示:返回来的总记录数,采用el表达式获取。

    在不同的页面中跳转的时候,需要传递一个id,在保持这个数据的时候,不能直接跟在url后面,需要使用<pg:param name="parentId"/>来传递。

    为了方便数据的区别,使用export属性对pageNumber重命名为currentPageNumber,这是为了test="${currentPageNumber eqpageNumber }判断的需要。

    以上就是使用pager-taglib对java分页的简单应用,框架的使用使得程序的开发更加的简洁。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值