java web struts2 mybatis 分頁

page.java類



import java.util.List;



public class Page {
	/** 當前頁 */
	private int curPage;
	/** 總頁數 */
	private int total;
	/** 總的記錄數 */
	private int sum;
	/** 結果集 */
	private List result;

	public Page() {
	}

	public Page(int curPage, int sum) {
		this.curPage = curPage;
		this.sum = sum;
		int totalPage = (int) Math.ceil(sum
				/ Double.parseDouble(Conv.pageSize + ""));
		if (totalPage == 0)
			totalPage = 1;
		this.total = totalPage;
	}

	public int getCurPage() {
		return curPage;
	}

	public void setCurPage(int curPage) {
		this.curPage = curPage;
	}

	public int getTotal() {
		return total;
	}

	public void setTotal(int total) {
		this.total = total;
	}

	public int getSum() {
		return sum;
	}

	public void setSum(int sum) {
		this.sum = sum;
	}

	public List getResult() {
		return result;
	}

	public void setResult(List result) {
		this.result = result;
	}
}

PageTag.java



import java.io.IOException;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.tagext.TagSupport;



public class PagerTag extends TagSupport {
	private static final long serialVersionUID = 183373550159351609L;
	private Page pager;
	private String urlstart;
	private String urlend;

	public PagerTag() {
	}

	public int doStartTag() throws JspException {
		try {
			String bar = getNavigatorBar();
			pageContext.getOut().write(bar);
			return SKIP_BODY;
		} catch (IOException e) {
			e.printStackTrace();
			throw new JspException(e);
		}
	}

	private String getNavigatorBar() {
		StringBuffer bar = new StringBuffer();
		bar.append("<div class='box'>");
		if (pager == null) {
			pager = new Page();
			pager.setCurPage(1);
		}
		int curpage = pager.getCurPage();// 當前頁
		int pages = pager.getTotal();// 總頁數
		/**
		 * 第一頁
		 */
		// 如果是第一頁
		if (curpage == 1) {
			bar.append(
					"<span>共" + pager.getSum()
							+ "條</span><span class='current prev'>上一頁</span>")
					.append("<span class='current'>1</span>");
		} else {
			bar.append(
					"<span>共" + pager.getSum() + "條</span><a href='" + urlstart
							+ (curpage - 1) + urlend + "'>上一頁</a>").append(
					"<a href='" + urlstart + 1 + urlend + "'>1</a>");
		}
		/**
		 * 結束(第一頁)
		 */

		// 如果總頁數小於11
		if (pages <= 11) {
			for (int i = 2; i < pages; i++) {
				if (curpage == i) {
					bar.append("<span class='current'>" + i + "</span>");
				} else {
					bar.append("<a href='" + urlstart + i + urlend + "'>" + i
							+ "</a>");
				}
			}
		} else {// 總頁數大於8
			if (curpage <= 6) { // 當前頁小頁等於6時 (頁碼要與前面的街上)
				for (int i = 2; i <= 7; i++) {
					if (curpage == i) {
						bar.append("<span class='current'>" + i + "</span>");
					} else {
						bar.append("<a href='" + urlstart + i + urlend + "'>"
								+ i + "</a>");
					}
				}
				bar.append("<span>....</span>");
				bar.append("<a href='" + urlstart + (pages - 1) + urlend + "'>"
						+ (pages - 1) + "</a>");
			} else if (curpage >= pages - 5) { // 當前頁大於最大頁-5時 要與後面的接上
				bar.append("<a href='" + urlstart + 2 + urlend + "'>" + 2
						+ "</a>");
				bar.append("<span>....</span>");
				for (int i = pages - 5 - 3; i <= pages - 1; i++) {
					if (curpage == i) {
						bar.append("<span class='current'>" + i + "</span>");
					} else {
						bar.append("<a href='" + urlstart + i + urlend + "'>"
								+ i + "</a>");
					}
				}
			} else {
				bar.append("<a href='" + urlstart + 2 + urlend + "'>" + 2
						+ "</a>");
				bar.append("<span>....</span>");
				for (int i = curpage - 3; i <= curpage + 3; i++) {
					if (curpage == i) {
						bar.append("<span class='current'>" + i + "</span>");
					} else {
						bar.append("<a href='" + urlstart + i + urlend + "'>"
								+ i + "</a>");
					}
				}
				bar.append("<span>....</span>");
				bar.append("<a href='" + urlstart + (pages - 1) + urlend + "'>"
						+ (pages - 1) + "</a>");
			}
		}

		/**
		 * 最後一頁
		 */
		// 如果是最後一頁
		if (pages == 0 || pages == 1) {
			bar.append("<span class='current next'>下一頁</span>");
		} else if (curpage == pages) {
			bar.append("<span class='current'>" + pages + "</span>").append(
					"<span class='current next'>下一頁</span>");
		} else {
			bar.append(
					"<a href='" + urlstart + pages + urlend + "'>" + pages
							+ "</a>").append(
					"<a href='" + urlstart + (curpage + 1) + urlend
							+ "'>下一頁</a>");
		}
		bar
				.append("<select style='height:26px;text-align: center;padding: 0.3em 0.5em;' οnchange=\"location.href='"
						+ urlstart + "'+this.value+'" + urlend + "'\">");
		for (int i = 1; i <= pages; i++) {
			if (curpage == i) {
				bar.append("<option value='" + i + "' selected='selected'>")
						.append("第" + i + "頁").append("</option>");
			} else {
				bar.append("<option value='" + i + "'>").append("第" + i + "頁")
						.append("</option>");
			}
		}
		bar.append("</select>");
		bar.append("</div>");
		return bar.toString();
	}

	public int doEndTag() throws JspTagException {
		return EVAL_PAGE;
	}

	public Page getPager() {
		return pager;
	}

	public void setPager(Page pager) {
		this.pager = pager;
	}

	public String getUrlend() {
		return urlend;
	}

	public void setUrlend(String urlend) {
		this.urlend = urlend;
	}

	public String getUrlstart() {
		return urlstart;
	}

	public void setUrlstart(String urlstart) {
		this.urlstart = urlstart;
	}
}

pages.tld

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib
  PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
  "http://java.sun.com/j2ee/dtds/web-jsptaglib_1_1.dtd">

<taglib>
	<tlibversion>1.0</tlibversion>
	<jspversion>1.1</jspversion>
	<shortname>papa</shortname>
	<!--====================pager:pagebar=====================-->
	<tag>
		<name>pager</name>
		<tagclass>com.xinfeijinxin.qy.util.PagerTag</tagclass>
		<bodycontent>JSP</bodycontent>
		<info>pager tag provide the frame of the page divider</info>
		<attribute>
			<name>pager</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>urlstart</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>urlend</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>css</name>
			<required>false</required>
			<rtexprvalue>false</rtexprvalue>
		</attribute>
	</tag>
</taglib>

jsp

<%@ taglib prefix="pages" uri="/WEB-INF/pages.tld"%>

<div class="pagination">
<pages:pager pager="${page}"
urlstart="personal/Personal_getReportList.action?page.curPage="
urlend="&userid=${uid}&zwid=${zw}&dwid=${dwid}&bmid=${bmid}&xm=${xm}&begindate=${begindate}&enddate=${enddate}&sfpl=${sfpl}&rblx=${rblx }"></pages:pager>
</div>


action

public String getReportList(){  
		//職位
		String zw = request.getParameter("zwid");
		request.setAttribute("zw", zw);
		
		//用戶id
		String userid = request.getParameter("userid");
		this.getRequest().setAttribute("uid", userid);

		//部門id
		String bmid = request.getParameter("bmid");
		request.setAttribute("bmid", bmid);
		
		//單位id
		String dwid = request.getParameter("dwid");
		request.setAttribute("dwid", dwid);
		
		//開始時間
		String begindate = request.getParameter("begindate");
		this.getRequest().setAttribute("begindate", begindate);
		
		//結束時間
		String enddate = request.getParameter("enddate");
		this.getRequest().setAttribute("enddate", enddate);
		
		//是否提交  
		String sfpl = request.getParameter("sfplselect");
		request.setAttribute("sfpl", sfpl);
		
		//姓名
		String xm = request.getParameter("xm");
		request.setAttribute("xm", xm);
		
		//日報類型
		String rblx = request.getParameter("rblx");
		request.setAttribute("rblx", rblx);
		
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("zw", zw);  
		if(userid != null && !userid.equals("")){
			params.put("userid", Integer.valueOf(userid));
		}else{
			params.put("userid", null);
		}
		if(bmid != null && !bmid.equals("")){
			params.put("bmid", Integer.valueOf(bmid));
		}else{
			params.put("bmid", null);
		}
		params.put("dwid", dwid);
		
		params.put("begindate", begindate);
		
		params.put("enddate", enddate);
		
		params.put("rblx", rblx);
		
		
		if(sfpl != null && !sfpl.equals("")){
			params.put("sfpl", Integer.valueOf(sfpl));
		}else{
			params.put("sfpl", null);
		}
		
		params.put("xm", xm);
		
		// 分頁信息設置
		if (page == null)
			page = new Page();
		// 如果當前頁爲0,則設置當前頁爲1
		if (page.getCurPage() == 0) {
			page.setCurPage(1);
		}
		page = this.personalService.queryReportList(params, page.getCurPage(), Conv.pageSize);
		
		return SUCCESS;
	}
service

	public Page queryReportList(Map<String, Object> params,int start,int limit){

		List<QyRbxx> list = null;  
		int count=0;
		try{
			list=pageDaoUtil.selectList("com.xinfeijinxin.qy.dao.IpersonalDao.queryReportList", params,new RowBounds((start-1)*Conv.pageSize, limit));
			Tools.getChinaseQyRbxx(list);	//過濾標籤
			count=this.manager.queryReportcount(params);
		}catch(Exception e){
			LOG.error(e.getMessage());
			e.printStackTrace();
		}
		Page page=new Page(start,count);		//初始化分頁數據
		page.setResult(list);					//封裝對象
		return page;
	}






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章