p.tld
-------------------------------
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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.2</jsp-version>
<short-name>p</short-name>
<uri>http://java.sun.com/pagination</uri>
<display-name>pagination</display-name>
<description>pagination</description>
<tag>
<name>page</name>
<tag-class>com.paic.elis.product.pdf.web.util.PaginationTag</tag-class>
<body-content>JSP</body-content>
<description>
pagination tag
</description>
<attribute>
<name>count</name>
<required>true</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>pageSize</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>pageIndex</name>
<required>true</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
</taglib>
===============================
package com.***.product.pdf.web.util;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
import org.apache.taglibs.standard.tag.common.core.NullAttributeException;
import org.apache.taglibs.standard.tag.el.core.ExpressionUtil;
import com.paic.pafa.app.lwc.core.util.DevLog;
public class PaginationTag extends TagSupport {
//????
private String pageSize = "25";
//????
private String count ="0";
//????
private String pageIndex = "1";
public void setPageSize(String pageSize) {
this.pageSize = pageSize;
}
public void setCount(String count) {
this.count = count;
}
public void setPageIndex(String pageIndex) {
this.pageIndex = pageIndex;
}
public int doStartTag() throws JspException {
StringBuffer sbPageHtml = new StringBuffer();
int pageSize = getAttribute("page","pageSize", this.pageSize);
DevLog.debug("pageSize:"+pageSize);
int intCount = getAttribute("page","count",this.count);
DevLog.debug("count:"+intCount);
int pageIndex = getAttribute("page","pageIndex",this.pageIndex);
DevLog.debug("page:"+pageIndex);
if(pageSize == 0)pageSize = 25;
int pageCount = (int)((intCount-1)/pageSize)+1;
if(pageIndex == 1) {
sbPageHtml.append("<div style='display:inline; text-align:center; padding-top:3px; margin:0 2px; height:20px; width:20px; background-color:#EEE; border:1px solid #000;'>|<</div>");
} else {
sbPageHtml.append("<button style='height:20px; margin:0 2px; width:20px; padding:0; border:1px solid black; background-color:#FFF;' οnclick=/"javascript:pageTo(1)/">|<</button>");
}
if(pageCount <= 10){
for(int i = 1; i <= pageCount; i++) {
if (pageIndex != i) {
sbPageHtml.append("<button style='height:20px; margin:0 2px; width:20px; padding:0; border:1px solid black; background-color:#FFF;' οnclick=/"javascript:pageTo("+i+")/">"+i+"</button>");
}else {
sbPageHtml.append("<div style='display:inline; text-align:center; padding-top:3px; margin:0 2px; height:20px; width:20px; background-color:#EEE; border:1px solid #000;'>"+i+"</div>");
}
}
} else {
if(pageIndex-4 < 1){
for(int i = 1; i <= 10; i++) {
if (pageIndex != i) {
sbPageHtml.append("<button style='height:20px; margin:0 2px; width:20px; padding:0; background-color:#FFF; border:1px solid black; background-color:#FFF;' οnclick=/"javascript:pageTo("+i+")/">"+i+"</button>");
}else {
sbPageHtml.append("<div style='display:inline; text-align:center; padding-top:3px; margin:0 2px; height:20px; width:20px; background-color:#EEE; border:1px solid #000;'>"+i+"</div>");
}
}
}else if (pageIndex >= pageCount - 10) {
for(int i = pageCount-9; i <= pageCount; i++) {
if (pageIndex != i) {
sbPageHtml.append("<button style='height:20px; margin:0 2px; width:20px; padding:0; border:1px solid black; background-color:#FFF;' οnclick=/"javascript:pageTo("+i+")/">"+i+"</button>");
}else {
sbPageHtml.append("<div style='display:inline; text-align:center; padding-top:3px; margin:0 2px; height:20px; width:20px; background-color:#EEE; border:1px solid #000;'>"+i+"</div>");
}
}
} else {
for(int i = pageIndex-4; i <= pageIndex+5; i++) {
if (pageIndex != i) {
sbPageHtml.append("<button style='height:20px; margin:0 2px; width:20px; padding:0; border:1px solid black; background-color:#FFF;' οnclick=/"javascript:pageTo("+i+")/">"+i+"</button>");
}else {
sbPageHtml.append("<div style='display:inline; text-align:center; padding-top:3px; margin:0 2px; height:20px; width:20px; background-color:#EEE; border:1px solid #000;'>"+i+"</div>");
}
}
}
}
if(pageIndex == pageCount) {
sbPageHtml.append("<div style='display:inline; text-align:center; padding-top:3px; margin:0 2px; height:20px; width:20px; background-color:#EEE; border:1px solid #000;'>>|</div>");
} else {
sbPageHtml.append("<button style='height:20px; margin:0 2px; width:20px; padding:0; border:1px solid black; background-color:#FFF;' οnclick=/"javascript:pageTo("+pageCount+")/">>|</button>");
}
try {
JspWriter out = pageContext.getOut();
out.print(sbPageHtml.toString());
} catch (IOException e) {
e.printStackTrace();
}
return super.doStartTag();
}
/*
* ?????EL?????
*/
private int getAttribute(String tag, String attr, String _value) {
int result = 0;
try{
String value = (String)ExpressionUtil.evalNotNull(tag, attr, _value, Object.class, this, pageContext);
result = Integer.parseInt(value);
} catch(NullAttributeException e) {
DevLog.error(e);
} catch (JspException e) {
DevLog.error(e);
} catch(NumberFormatException e){
DevLog.error(e);
return 0;
} catch(Exception e) {
DevLog.error(e);
}
return result;
}
}