浏览 10583 次
锁定老帖子 主题:struts2 分页
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-11-19
最后修改:2008-11-19
首先写了一个分页的类,其实只有主要属性的setter和getter方法 /** * 分页类 * @author qinglin876 * */ public class Pagination { private int start; //一次取得的数量 private int size; //要取得页数 private int currentPage = 1; //总的记录页数 private int totalPage = 0; //总的记录条数 private int totalRecord; public int getTotalRecord() { return totalRecord; } public void setTotalRecord(int totalRecord) { this.totalRecord = totalRecord; } public Pagination(){ } public Pagination(int size){ this.size = size; } public int getSize() { return size; } public void setSize(int size) { this.size = size; } public int getStart() { return start; } public void setStart(int start) { this.start = start; } public int getCurrentPage() { return currentPage; } public void setCurrentPage(int currentPage) { this.currentPage = currentPage; } public int getTotalPage() { return totalPage; } public void setTotalPage(int totalPage) { this.totalPage = totalPage; } } 另外pagination.jsp由pagination类填充 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <SCRIPT type="text/javascript"> function trim(str){ return str.replace(/(^\s*)|(\s*$)/g, ""); } function selectPage(input){ var value = trim(input.value); if(value == ""){ return; } if(/\d+/.test(value)){ input.form.submit(); return; } alert("请输入正确的页数"); input.focus(); } </SCRIPT> <div class="pagech"> <s:if test="pagination.totalPage != 0"> <s:url action="%{#request.url}" id="first"> <s:param name="pagination.currentPage" value="1"></s:param> </s:url> <s:url action="%{#request.url}" id="next" > <s:param name="pagination.currentPage" value="pagination.currentPage+1"> </s:param> </s:url> <s:url action="%{#request.url}" id="prior" > <s:param name="pagination.currentPage" value="pagination.currentPage-1"></s:param> </s:url> <s:url action="%{#request.url}" id="last"> <s:param name="pagination.currentPage" value="pagination.totalPage"></s:param> </s:url> <s:if test="pagination.currentPage == 1"> <span class="current">首页</span> <span class="current">上一页</span> </s:if> <s:else> <s:a href="%{first}">首页</s:a> <s:a href="%{prior}">上一页</s:a> </s:else> <s:if test="pagination.currentPage == pagination.totalPage || pagination.totalPage == 0"> <span class="current">下一页</span> <span class="current">末页</span> </s:if> <s:else> <s:a href="%{next}">下一页</s:a> <s:a href="%{last}">末页</s:a> </s:else> <span class="jumplabel">跳转到</span> <s:form action="%{#request.url}" theme="simple" cssStyle="display:inline"> <s:hidden name="pagination.totalPage" value="%{pagination.totalPage}"></s:hidden> <input type="text" name="pagination.currentPage" size="2" onblur="selectPage(this)" /> </s:form> <span class="jumplabel">页</span> <span class="jumplabel">共<s:property value="pagination.totalRecord" />条</span> <span class="jumplabel">当前是第<s:property value="pagination.currentPage" />/<s:property value="pagination.totalPage"/>页</span> </s:if> </div> 用的时候,在页面include进去,注意上面的"%{#request.url}",即是在struts2的action里面有一个setter和getter方法,下面看action中的某个方法 public String showNotices() throws Exception{ if(tip != null){ tip = new String(tip.getBytes("iso8859-1"),"utf-8"); } if(notices == null) this.notices = new ArrayList<Notice>(); int size = Integer.valueOf(this.getText("per_page_notice_size")); if (pagination == null) { pagination = new Pagination(size); } pagination.setSize(size); if (pagination.getCurrentPage() <= 0) { pagination.setCurrentPage(1); } if (pagination.getTotalPage() != 0 && pagination.getCurrentPage() > pagination.getTotalPage()) { pagination.setCurrentPage(pagination.getTotalPage()); } url = "goto_showNotices.action"; this.notices.addAll(this.noticeDAO.showAll(pagination)); if(this.notices.size() == 0 && pagination.getCurrentPage() != 1){ pagination.setCurrentPage(pagination.getCurrentPage()-1); this.notices.addAll(this.noticeDAO.showAll(pagination)); } return "success"; } 在上面的this.noticeDAO.showAll(pagination))中填充pagination,具体如下 /* * 显示所有的通告 * @see com.qinglin.dao.NoticeDAO#showAll(com.qinglin.util.Pagination) */ @SuppressWarnings("unchecked") public List<Notice> showAll(final Pagination pagination) { String hql = "from Notice as n"; this.getHibernateTemplate().setCacheQueries(true); int totalRecord = ((Long) this.getSession().createQuery( "select count(*) " + hql).uniqueResult()).intValue(); int totalPage = totalRecord % pagination.getSize() == 0 ? totalRecord / pagination.getSize() : totalRecord / pagination.getSize() + 1; pagination.setTotalRecord(totalRecord); pagination.setTotalPage(totalPage); hql += " order by n.add_date desc"; final String hql1 = hql; return (List<Notice>) this.getHibernateTemplate().execute( new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createQuery(hql1); query.setFirstResult((pagination.getCurrentPage() - 1) * pagination.getSize()); query.setMaxResults(pagination.getSize()); return query.list(); } }); } 基本上就这些,当然请求的action里面需要设置pagination的setter和getter方法 这个分页方法特点是简单,只需在action中指明请求的url,用某种方法填充pagination,在显示的页面包含pagination.jsp即可。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |