使用pager-taglib完成分页,以及对分页的分装
2017-03-14 22:22
239 查看
1.分页显示所必须需要知道的两个参数:总记录数和当前页数的返回结果集,所以第一要做的就是对这两个参数的分装,新建一个PagerModel类
4.在action类中获得参数之后,将参数传入到jsp页面
5.在jsp页面中使用pager-taglib插件完成分页,以下是分页显示代码
public class PagerModel { /** * 总记录数 */ private int total; /** * 当前页结果集 */ private List datas; 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; } }2.之后实现对PagerModel类的分装,新建一个AbstractManager类;
public class AbstractManager extends HibernateDaoSupport { public PagerModel searchPaginated(String hql,int offset,int pagesize){ return searchPaginated(hql,null,offset, pagesize); } public PagerModel searchPaginated(String hql,Object obj,int offset,int pagesize){ return searchPaginated(hql, new Object[]{obj},offset, pagesize); } public PagerModel searchPaginated(String hql,Object[] params,int offset,int pagesize){ String countHql=getCountQuery(hql); Query query=getSession().createQuery(countHql); if(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=getSession().createQuery(hql); if(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 datas=query.list(); PagerModel pm=new PagerModel(); pm.setTotal(total); pm.setDatas(datas); return pm; } private String getCountQuery(String hql){ int index=hql.indexOf("from"); if(index!=-1){ return "select count(*)"+hql.substring(index); } throw new SystemException("无效的hql语句"); } }3.在实现类中去继承AbstractManager这个分装类
public class OrgManagerImpl extends AbstractManager implements OrgManager { public PagerModel findOrgs(int parentId,int offset,int pagesize) { //如果parentId=0,则查找顶级机构列表 if(parentId == 0){ return searchPaginated("from Orgnization o where o.parent is null",offset,pagesize); } return searchPaginated("from Orgnization o where o.parent.id = ?", parentId,offset,pagesize); } }
4.在action类中获得参数之后,将参数传入到jsp页面
public class OrgAction extends DispatchAction { @Override protected ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { OrgActionForm oaf = (OrgActionForm)form; int offset = 0; try { offset = Integer.parseInt(request.getParameter("pager.offset")); } catch (Exception ignore) { } int pagesize = 10; request.setAttribute("pm", orgManager.findOrgs(oaf.getParentId(),offset,pagesize) ); // int ppid = 0; if(oaf.getParentId() != 0){ Orgnization org = orgManager.findOrg(oaf.getParentId()); Orgnization parent = org.getParent(); if(parent != null){ ppid = parent.getId(); } } request.setAttribute("ppid", ppid); return mapping.findForward("index"); } }
5.在jsp页面中使用pager-taglib插件完成分页,以下是分页显示代码
<pg:pager url="org.do" items="${pm.total }" export="currentPageNumber=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>
相关文章推荐
- 使用pager-taglib.jar实现的分页技术
- struts2 + hibernate + spring 使用pager-taglib 分页
- 使用pager-taglib插件实现SSH框架的分页显示功能,只翻页三出错
- JSP通用分页组件 pager-taglib使用
- pager-taglib分页处理的使用
- 分页标签:pager-taglib使用指南
- 使用pager-taglib的jar包实现分页的方法
- pager-taglib分页标签使用方法
- 使用Pager-taglib进行分页
- viewpager和以及在viewpager中使用FragmentPagerAdapter实现分页
- 在JSP中使用pager-taglib进行分页处理
- pager-taglib分页的使用
- pager-taglib分页控件的使用总结
- 使用pager-taglib.jar实现分页
- 分页标签:pager-taglib使用指南
- 使用pager-taglib实现通用分页框架
- 分页pager-taglib使用指南
- Java中 分页组件Pager-taglib的使用
- pager-taglib分页处理的使用
- 分页标签:pager-taglib使用指南