Pagination Tag

来源:互联网 发布:下载风行软件 编辑:程序博客网 时间:2024/06/05 10:17

 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;' onclick=/"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;' onclick=/"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;' onclick=/"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;' onclick=/"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;' onclick=/"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;' onclick=/"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;
  }

}

原创粉丝点击