`

自定义分页标签 pagination tag

 
阅读更多

让翻页变的更简单

 

paginationTag.java

 

 

package com.utils;

import java.io.IOException;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;

import com.constant.Constants;

public class PaginationTag extends BodyTagSupport{

	private static final long serialVersionUID = 3195861338194897318L;

	private String tagName;
	private Integer curPage;
	private Integer totalRowCount;
	public String getTagName() {
		return tagName;
	}
	public void setTagName(String tagName) {
		this.tagName = tagName;
	}
	public Integer getCurPage() {
		return curPage;
	}
	public void setCurPage(Integer curPage) {
		if(curPage==null || "".equals(curPage) || curPage==0){
			curPage = 1;
		}
		this.curPage = curPage;
	}
	
	public Integer getTotalRowCount() {
		return totalRowCount;
	}
	public void setTotalRowCount(Integer totalRowCount) {
		this.totalRowCount = totalRowCount;
	}
	private Integer pageSize = Constants.PAGINATION_PAGESIZE;
	
	private Integer totalPage(){
		Integer totalPage = 0;
		if(totalRowCount>0 && totalRowCount<=pageSize){
			totalPage = 1;
		}else if(totalRowCount>pageSize){
			if(totalRowCount%pageSize>0){
				totalPage = totalRowCount/pageSize+1;
			}else{
				totalPage = totalRowCount/pageSize;
			}
		}
		return totalPage;
	}
		
	private Integer nextPage(){
		Integer nextPage = curPage+1;
		if(nextPage>totalPage()){
			nextPage = totalPage();
		}
		return nextPage;
	}
	
	private Integer prePage(){
		Integer prePage = curPage-1;
		if(prePage<1){
			prePage = 1;
		}
		return prePage;
	}
	
	private Integer getStartRow(Integer goPage){
		Integer startRow = (goPage-1)*pageSize;
		return startRow;
	}
	
	@Override
	public int doStartTag() throws JspException{
		try {
			StringBuffer sb = new StringBuffer();
			sb.append("<div class=\"pagebar\" style=\"line-height:12px;text-align:center;\">");
			if(curPage!=1){
				sb.append("<a href=\"javascript:");
				sb.append(tagName);
				sb.append("(");
				sb.append(getStartRow(prePage()));
				sb.append(",");
				sb.append(prePage());
				sb.append(")\"><span>Previous</span></a>");
			}else{
				sb.append("<span>Previous</span>");
			}
			sb.append(" &lt; ");
			if(curPage-3>=1){
				for(int i=3;i>0;i--){
					sb.append("<a href=\"javascript:");
					sb.append(tagName);
					sb.append("(");
					sb.append(getStartRow(curPage-i));
					sb.append(",");
					sb.append(curPage-i);
					sb.append(")\"><span class=\"pnlink\">");
					sb.append(curPage-i);
					sb.append("</span></a>");
				}
			}else{
				for(int i=1;i<curPage;i++){
					sb.append("<a href=\"javascript:");
					sb.append(tagName);
					sb.append("(");
					sb.append(getStartRow(i));
					sb.append(",");
					sb.append(i);
					sb.append(")\"><span class=\"pnlink\">");
					sb.append(i);
					sb.append("</span></a>");
				}
			}
			sb.append("<span class=\"curPage\">");
			sb.append(curPage);
			sb.append("</span>");
			if(curPage<totalPage()-3){
				for(int i=1;i<4;i++){
					sb.append("<a href=\"javascript:");
					sb.append(tagName);
					sb.append("(");
					sb.append(getStartRow(curPage+i));
					sb.append(",");
					sb.append(curPage+i);
					sb.append(")\"><span class=\"pnlink\">");
					sb.append(curPage+i);
					sb.append("</span></a>");
				}
			}else{
				for(int i=1;i<=totalPage()-curPage;i++){
					sb.append("<a href=\"javascript:");
					sb.append(tagName);
					sb.append("(");
					sb.append(getStartRow(curPage+i));
					sb.append(",");
					sb.append(curPage+i);
					sb.append(")\"><span class=\"pnlink\">");
					sb.append(curPage+i);
					sb.append("</span></a>");
				}
			}
			sb.append(" &gt; ");
			if(curPage.equals(totalPage())){
				sb.append("<span>Next</span>");
			}else{
				sb.append("<a href=\"javascript:");
				sb.append(tagName);
				sb.append("(");
				sb.append(getStartRow(nextPage()));
				sb.append(",");
				sb.append(nextPage());
				sb.append(")\"><span>Next</span></a>");
			}
			sb.append("</div>");
			if(totalRowCount>0){
				pageContext.getOut().write(sb.toString());
			}
		} catch (IOException e) {
			e.printStackTrace();
		} 
		return BodyTagSupport.EVAL_BODY_INCLUDE;
	}
	
	@Override
	public int doEndTag() throws JspException{
		return BodyTagSupport.EVAL_BODY_INCLUDE;
	}

}

 

myTag.tld

 

<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
	<tlib-version>1.0</tlib-version>
	<jsp-version>1.1</jsp-version>
	<short-name>epp</short-name>
	<tag>
		<name>pagination</name>
		<tag-class>com.utils.PaginationTag</tag-class>
		<body-content>Jsp</body-content>
		<attribute>
			<name>tagName</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
			<type>java.lang.String</type>
		</attribute>
		<attribute>
			<name>curPage</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
			<type>java.lang.Integer</type>
		</attribute>
		<attribute>
			<name>totalRowCount</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
			<type>java.lang.Integer</type>
		</attribute>
	</tag>
</taglib>

 

Js function name should be equal to tagName.

 

function turnPageFunction(startRow,curPage){
	$("#startRow").val(startRow);
	$("#curPage").val(curPage);
	window.document.forms[0].submit();
}
 

jsp invoke

 

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


<epp:pagination totalRowCount="${totalRow}" tagName="turnPageFunction" curPage="${curPage}"></epp:pagination>

 

action method:

 

private Integer curPage;
private Integer totalRow;

public Integer getCurPage() {
		return curPage;
	}

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

public Integer getTotalRow() {
		return totalRow;
	}

	public void setTotalRow(Integer totalRow) {
		this.totalRow = totalRow;
	}


public String findPageData(){
		Integer startRow = 0;
		String strStartRow = this.getRequest().getParameter("startRow");
		if(strStartRow!=null && !"".equals(strStartRow)){
			startRow = Integer.parseInt(strStartRow);
		}
		
		totalRow = demoService.countTotalRow();
		list = demoService.findPageData(startRow, startRow+Constants.PAGINATION_PAGESIZE);
		this.getRequest().setAttribute("curPage", curPage);
		return SUCCESS;
	}
 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics