利用组件分页

. 如何分页?
1.把pager-taglib.jar放到lib目录下(仅此足亦,完全没必要改web.xml什么的,还有官方war包中的东西都可以不要)
2.在Jsp页面嵌入<%@ taglib uri="http://jsptags.com/tags/navigation/pager" prefix="pg" %>


分页代码:
action中示范代码:


PageModel pm = empMgr.selectAllEmp(PageModel.getOffset(request), PageModel.getPageSize(request)) ;
request.setAttribute("pm", pm) ;

jsp示范代码:
........
........
//分页代码
<pg:pager url="employee.do" items="${pm.total}" maxPageItems = "5" maxIndexPages="10" export="currentPageNumber=pageNumber" >
<pg:param name="pageSize" value="5" />
<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>

/*************PageModule类的代码**************/


public class PageModel {

private List datas; //页面上要显示的数据
private int total; //总的条数,作用:总共有多少页

public List getDatas() {
return datas;
}
public void setDatas(List datas) {
this.datas = datas;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}

public static int getOffset(HttpServletRequest request) {
int offset = 0 ;
String strOffset = request.getParameter("pager.offset") ;
if (strOffset != null) {
offset = Integer.parseInt(strOffset) ;
}
return offset ;
}

public static int getPageSize(HttpServletRequest request) {
int pageSize = 5 ;
String strPageSize = request.getParameter("pageSize") ;
if (strPageSize != null) {
pageSize = Integer.parseInt(strPageSize) ;
}

return pageSize ;
}
}


/********************************************************************/
/*****************抽象分页*******仅供参考******************************/
/********************************************************************/

package com.oa.manager.impl;

import java.util.List;

import org.hibernate.Query;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.oa.PagerModel;

public class AbstractPagerManager extends HibernateDaoSupport {


public PagerModel searchPaginated(String hql,int offset, int pagesize) {
return this.searchPaginated(hql, null, offset, pagesize);
}

public PagerModel searchPaginated(String hql, Object obj, int offset, int pagesize) {
return this.searchPaginated(hql, new Object[]{obj}, offset, pagesize);
}

/**
* 根据Hql语言进行分页
* @param hql HQL语句
* @param params HQL语句的参数
* @param offset 从第几条记录开始查询
* @param pagesize 每页显示多少条
* @return
*/
@SuppressWarnings("unchecked")
public PagerModel searchPaginated(String hql,Object[] params, int offset, int pagesize) {

//获取总记录数
String countHql = this.getCountQuery(hql);
System.out.println("countHql: " + countHql);
Query query = this.getSession().createQuery(countHql);
if(query != null && params != null && params.length > 0) {
for(int i=0; i<params.length; i++) {
query.setParameter(i, params[i]);
}
}

int total = ((Long)query.uniqueResult()).intValue();

//获得当前页的结果集
query = this.getSession().createQuery(hql);
if(query != null && params != null && params.length > 0) {
for(int i=0; i<params.length; i++) {
query.setParameter(i, params[i]);
}
}
query.setFirstResult(offset);
query.setMaxResults(pagesize);
List<Organization> list = query.list();

PagerModel pm = new PagerModel();
pm.setTotal(total);
pm.setList(list);

return pm;

}

private String getCountQuery(String hql) {
System.out.println(hql);
int index = hql.indexOf("from");
System.out.println("index:" + index);
if(index != -1){
return "select count(*) " + hql.substring(index);
}

System.out.println("问题出了");
throw new RuntimeException("无效的HQL查询语句!");


}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值