首先寫一個(gè)分頁的PageBean的類,用于存放分頁的基本信息如總記錄數(shù),總頁數(shù)等。
package com.manman.smallBBS.util;
imp
public class PageBean {
@SuppressWarnings("unchecked")
private List list; //要返回的某一頁的記錄列表
private int allRow; //總記錄數(shù)
private int totalPage; //總頁數(shù)
private int currentPage; //當(dāng)前頁
private int pageSize; //每頁記錄數(shù)
@SuppressWarnings("unused")
private boolean isFirstPage; //是否為第一頁
@SuppressWarnings("unused")
private boolean isLastPage; //是否為最后一頁
@SuppressWarnings({ "unused", "unused" })
private boolean hasPreviousPage; //是否有前一頁
@SuppressWarnings({ "unused", "unused" })
private boolean hasNextPage; //是否有下一頁
@SuppressWarnings("unchecked")
public List getList() {
return list;
}
@SuppressWarnings("unchecked")
public void setList(List list) {
this.list = list;
}
public int getAllRow() {
return allRow;
}
public void setAllRow(int allRow) {
this.allRow = allRow;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
/** *//**
* 初始化分頁信息
*/
public void init(){
this.isFirstPage = isFirstPage();
this.isLastPage = isLastPage();
this.hasPreviousPage = isHasPreviousPage();
this.hasNextPage = isHasNextPage();
}
/** *//**
* 以下判斷頁的信息,只需getter方法(is方法)即可
* @return
*/
public boolean isFirstPage() {
return currentPage == 1; // 如是當(dāng)前頁是第1頁
}
public boolean isLastPage() {
return currentPage == totalPage; //如果當(dāng)前頁是最后一頁
}
public boolean isHasPreviousPage() {
return currentPage != 1; //只要當(dāng)前頁不是第1頁
}
public boolean isHasNextPage() {
return currentPage != totalPage; //只要當(dāng)前頁不是最后1頁
}
/** *//**
* 計(jì)算總頁數(shù),靜態(tài)方法,供外部直接通過類名調(diào)用
* @param pageSize 每頁記錄數(shù)
* @param allRow 總記錄數(shù)
* @return 總頁數(shù)
*/
public static int countTotalPage(final int pageSize,final int allRow){
int totalPage = allRow % pageSize == 0 ? allRow/pageSize : allRow/pageSize+1;
return totalPage;
}
/** *//**
* 計(jì)算當(dāng)前頁開始記錄
* @param pageSize 每頁記錄數(shù)
* @param currentPage 當(dāng)前第幾頁
* @return 當(dāng)前頁開始記錄號(hào)
*/
public static int countOffset(final int pageSize,final int currentPage){
final int offset = pageSize*(currentPage-1);
return offset;
}
/** *//**
* 計(jì)算當(dāng)前頁,若為0或者請(qǐng)求的URL中沒有"?page=",則用1代替
* @param page 傳入的參數(shù)(可能為空,即0,則返回1)
* @return 當(dāng)前頁
*/
public static int countCurrentPage(int page){
final int curPage = (page==0?1:page);
return curPage;
}
}
dao層實(shí)現(xiàn):
public List queryInboxForPage(final int offset, final int length, final String receiver) {
final String hql = "from Email e where e.receiver=:receiver order by createTime desc";
List list = getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql);
query.setParameter("receiver", receiver);
query.setFirstResult(offset);
query.setMaxResults(length);
List list = query.list();
return list;
}
});
return list;
}
service層實(shí)現(xiàn):
public PageBean queryInboxForPage(int pageSize, int page,
String receiver) {
//給PageBean傳值
int allRow = emaildao.getInboxAllRowCount(receiver); //
int totalPage = PageBean.countTotalPage(pageSize, allRow); //
final int offset = PageBean.countOffset(pageSize, page); //
final int length = pageSize; //
final int currentPage = PageBean.countCurrentPage(page);
//List<Email> list = emaildao.queryInboxForPage(offset, length,receiver); //
List list=emaildao.queryInboxForPage(offset, length, receiver);
PageBean pageBean = new PageBean();
pageBean.setPageSize(pageSize);
pageBean.setCurrentPage(currentPage);
pageBean.setAllRow(allRow);
pageBean.setTotalPage(totalPage);
pageBean.setList(list);
pageBean.init();
return pageBean;
}
頁面部分(重點(diǎn)):
第
<s:property value="pageBean.currentPage" />/<s:property value="pageBean.totalPage" />
頁
<s:if test="%{pageBean.totalPage>1}">
<s:if test="%{pageBean.currentPage == 1}">
首頁 上一頁
</s:if>
<s:else>
<a
href="viewEmail.act
<a
href="viewEmail.act
</s:else>
<s:bean name="org.apache.struts2.util.Counter" id="counter">
<s:param name="first" value="1" />
<s:param name="last" value="%{pageBean.totalPage}" />
<s:iterator>
<s:if test="pageBean.currentPage!=current-1">
<s:a
href="viewEmail.act
<font color="#2fa2ff"><s:property /> </font>
</s:a>
</s:if>
<s:else>
<font color="red"><s:property /> </font>
</s:else>
</s:iterator>
</s:bean>
<s:if test="%{pageBean.currentPage != pageBean.totalPage}">
<a
href="viewEmail.act
<a
href="viewEmail.act
</s:if>
<s:else>
聯(lián)系客服