`
sonyfe25cp
  • 浏览: 202668 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts2 分页代码

 
阅读更多
分页模块在参考完无数个版本之后总算自己做出一个自己的版本了...

Pager类:
package bit.dlde.marx.util;

import java.math.*;

public class NewPager {
    private int totalRows; //总行数
    private int pageSize = 10; //每页显示的行数
    private int currentPage; //当前页号
    private int totalPages; //总页数
    private int startRow; //当前页在数据库中的起始行
    
    public NewPager() {
    }
    
    /**默认每页10个
     * @param _totalRows
     */
    public NewPager(int _totalRows) {
        totalRows = _totalRows;
        totalPages=totalRows/pageSize;
//        System.out.println("总共的页数:"+totalPages);
        int mod=totalRows%pageSize;
        if(mod>0){
            totalPages++;
        }
        currentPage = 1;
        startRow = 0;
    }
    
    
    /**可自定义每页显示多少数
     * @param _totalRows
     * @param _pageSize
     */
    public NewPager(int _totalRows, int _pageSize) {
		totalRows = _totalRows;
		pageSize = _pageSize;
		totalPages = totalRows / pageSize;
		// System.out.println("总共的页数:"+totalPages);
		int mod = totalRows % pageSize;
		if (mod > 0) {
			totalPages++;
		}
		currentPage = 1;
		startRow = 0;
	}
    
   
    public void first() {
        currentPage = 1;
        startRow = 0;
    }
    public void previous() {
        if (currentPage == 1) {
            return;
        }
        currentPage--;
        startRow = (currentPage - 1) * pageSize;
    }
    public void next() {
        if (currentPage < totalPages) {
            currentPage++;
        }
        startRow = (currentPage - 1) * pageSize;
    }
    public void last() {
        currentPage = totalPages;
        startRow = (currentPage - 1) * pageSize;
    }
    public void refresh(int _currentPage) {
        currentPage = _currentPage;
        if (currentPage > totalPages) {
            last();
        }
    }
    
    
    
    
    
    
    
    public int getStartRow() {
        return startRow;
    }
    public int getTotalPages() {
        return totalPages;
    }
    public int getCurrentPage() {
        return currentPage;
    }
    public int getPageSize() {
        return pageSize;
    }
    public void setTotalRows(int totalRows) {
        this.totalRows = totalRows;
    }
    public void setStartRow(int startRow) {
        this.startRow = startRow;
    }
    public void setTotalPages(int totalPages) {
        this.totalPages = totalPages;
    }
    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }
    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }
    public int getTotalRows() {
        return totalRows;
    }
}


PageService 类:
package bit.dlde.marx.util;

public class NewPagerService {
	/** 
	 * 功能描述:使用默认参数的
	 * <br>输入:
	 * <br>输出:
	 * <br>创建日期:Nov 6, 2008
	*/
	public NewPager getPager(String currentPage,String pagerMethod,int totalRows) {
        //    定义pager对象,用于传到页面
		NewPager pager = new NewPager(totalRows);
//		System.out.println("执行到getPager了");
        //    如果当前页号为空,表示为首次查询该页
        //    如果不为空,则刷新pager对象,输入当前页号等信息
        if (currentPage != null) {
            pager.refresh(Integer.parseInt(currentPage));
//            System.out.println("确认完当前的currentPage");
        }else{
//        	currentPage="1";
        	pager.refresh(1);
        }
        //    获取当前执行的方法,首页,前一页,后一页,尾页。
//        System.out.println("当前要执行的页面动作为:"+pagerMethod);
        if (pagerMethod != null) {
            if (pagerMethod.equals("first")) {
                pager.first();
            } else if (pagerMethod.equals("previous")) {
                pager.previous();
            } else if (pagerMethod.equals("next")) {
                pager.next();
            } else if (pagerMethod.equals("last")) {
                pager.last();
            }
        }else{
        	pager.first();
        }
        return pager;
    }
	/** 
	 * 功能描述:可自定义每页显示书目的
	 * <br>输入:
	 * <br>输出:
	 * <br>创建日期:Nov 6, 2008
	*/
	public NewPager getPager(String currentPage,String pagerMethod,int totalRows,int pageSize) {
        //    定义pager对象,用于传到页面
		NewPager pager = new NewPager(totalRows,pageSize);
//		System.out.println("执行到getPager了");
        //    如果当前页号为空,表示为首次查询该页
        //    如果不为空,则刷新pager对象,输入当前页号等信息
        if (currentPage != null) {
            pager.refresh(Integer.parseInt(currentPage));
//            System.out.println("确认完当前的currentPage");
        }else{
//        	currentPage="1";
        	pager.refresh(1);
        }
        //    获取当前执行的方法,首页,前一页,后一页,尾页。
//        System.out.println("当前要执行的页面动作为:"+pagerMethod);
        if (pagerMethod != null) {
            if (pagerMethod.equals("first")) {
                pager.first();
            } else if (pagerMethod.equals("previous")) {
                pager.previous();
            } else if (pagerMethod.equals("next")) {
                pager.next();
            } else if (pagerMethod.equals("last")) {
                pager.last();
            }
        }else{
        	pager.first();
        }
        return pager;
    }

}



调用示例:
/** 
	 * 功能描述:前台列表
	 * <br>输入:
	 * <br>输出:
	 * <br>创建日期:Nov 6, 2008
	*/
	public String ExpListForFront() throws Exception {
		int totalRow = expServ.getTotalRowsNum();
		System.out.println(totalRow+" :totalRow");
		pager = pagerService.getPager(this.getCurrentPage(), this
				.getPagerMethod(), totalRow,36);//前台页面一页36个
		this.setCurrentPage(String.valueOf(pager.getCurrentPage()));
		this.setTotalRows(String.valueOf(totalRow));
		availableItems = expServ.getRows(pager.getPageSize(), pager.getStartRow());
		System.out.println("准备显示专家列表");
		List<Experts> explistemp = new ArrayList<Experts>();
		for (Experts es : availableItems) {
			es.setName(CharacterTrans.trans8859_1ToGBK(es.getName()));
				es.setResume(CharacterTrans.trans8859_1ToGBK(es.getResume()));
				es.setPhoto(CharacterTrans.trans8859_1ToGBK(es.getPhoto()));
				es.setEditor(CharacterTrans.trans8859_1ToGBK(es.getEditor()));
				es.getExpertType().setTempname(CharacterTrans.trans8859_1ToGBK(es.getExpertType().getName()));
			explistemp.add(es);
		}
		this.setItEx(explistemp.iterator());
		System.out.println("显示专家列表完毕");
		return SUCCESS;
	}


页面上设置:
<div id="pageflip">
				共
				<s:property value="totalRows" />
				行&nbsp; 第
				<s:property value="currentPage" />
				页&nbsp; 共
				<s:property value="pager.getTotalPages()" />
				页&nbsp;
				<a
					href="<s:url value="expListForFront.action">
               			 <s:param name="currentPage" value="currentPage"/>
               			 <s:param name="pagerMethod" value="'first'"/>
                    </s:url>">首页</a>
				<a
					href="<s:url value="expListForFront.action">
               			 <s:param name="currentPage" value="currentPage"/>
               			 <s:param name="pagerMethod" value="'previous'"/>
           			 </s:url>">上一页</a>
				<a
					href="<s:url value="expListForFront.action">
               			 <s:param name="currentPage" value="currentPage"/>
              			 <s:param name="pagerMethod" value="'next'"/>
           			 </s:url>">下一页</a>
				<a
					href="<s:url value="expListForFront.action">
               			 <s:param name="currentPage" value="currentPage"/>
              			  <s:param name="pagerMethod" value="'last'"/>
            		</s:url>">尾页</a>
			</div>


这样就OK了...

虽然显示的比较老土....可满足需求就行了...继续要就怎么显示一串数字的那种分页..
分享到:
评论
3 楼 qq224 2011-09-29  
[img][/img][size=xx-small][/size][align=left][/align]
2 楼 sonyfe25cp 2008-12-29  
zjyyaini 写道

可以 能提供整个项目代码?我把你这个COPY进去报错。。。。 zhang.jun@chinasoftinc.com

项目代码不能提供.
哪儿出错?
1 楼 zjyyaini 2008-12-29  
可以 能提供整个项目代码?我把你这个COPY进去报错。。。。
zhang.jun@chinasoftinc.com

相关推荐

Global site tag (gtag.js) - Google Analytics