简易java分页标签

1,标签的实现类NumenTag.java

java 代码
 
  1. import  java.util.ArrayList;  
  2. import  java.util.HashMap;  
  3. import  java.util.List;  
  4. import  java.util.Map;  
  5.   
  6. import  javax.servlet.jsp.JspException;  
  7. import  javax.servlet.jsp.JspWriter;  
  8. import  javax.servlet.jsp.tagext.TagSupport;  
  9.   
  10. /** */ /**  
  11.  * 自定义的分页标签  
  12.  *  
  13.  * @author 马万林  
  14.  *  
  15.  */   
  16. public   class  NumenTag  extends  TagSupport {  
  17.   
  18.     private  String url =  null ;  
  19.   
  20.     private  Result result;  
  21.   
  22.     private  String page =  null ;  
  23.   
  24.     private  String[] p;  
  25.   
  26.     private  Map kv =  new  HashMap();  
  27.   
  28.     private  List key =  null ;  
  29.   
  30.     /** */ /**  
  31.      * 分离参数  
  32.      * @param params  
  33.      */   
  34.     public   void  setParams(String params) {  
  35.         key = new  ArrayList();  
  36.         p = params.split(";" );  
  37.         for  ( int  i =  0 ; p.length> 1 &&i < p.length; i++) {  
  38.             kv.put(p[i].split(":" )[ 0 ], p[i].split( ":" )[ 1 ]);  
  39.             key.add(p[i].split(":" )[ 0 ]);  
  40.         }  
  41.     }  
  42.   
  43.     /** */ /**  
  44.      * 分页的结果  
  45.      * @param result  
  46.      */   
  47.     public   void  setResult(String result) {  
  48.         this .result = (Result) pageContext.getRequest().getAttribute( "result" );  
  49.         this .page = (String) pageContext.getRequest().getAttribute( "page" );  
  50.     }  
  51.   
  52.     public   void  setUrl(String url) {  
  53.         this .url = url;  
  54.     }  
  55.   
  56.     public   int  doStartTag()  throws  JspException {  
  57.         StringBuffer sb = null ;  
  58.         if  (result !=  null  && result.getContent() !=  null   
  59.                 && result.getContent().size() > 0 ) {  
  60.             sb = new  StringBuffer( "分页: " );  
  61.             if  (result.getPage().getHasPrePage()){  
  62.                 sb.append("<a href='" ).append(url);  
  63.                 if  (url.indexOf( "?" ) == - 1 )  
  64.                     sb.append("?page=1" );  
  65.                 else   
  66.                     sb.append("&page=1" );  
  67.                 linkParams(sb);  
  68.                 sb.append("'>" ).append( "首页" ).append( "</a>" ).append( " | " );  
  69.                 sb.append("<a href='" ).append(url);  
  70.                 if  (url.indexOf( "?" ) == - 1 )  
  71.                     sb.append("?page=" ).append(  
  72.                             result.getPage().getPreviousPage());  
  73.                 else   
  74.                     sb.append("&page=" ).append(  
  75.                             result.getPage().getPreviousPage());  
  76.                 linkParams(sb);  
  77.                 sb.append("'>" ).append( "上页" ).append( "</a>" ).append( " | " );  
  78.             }  
  79.             if  (result.getPage().getHasNextPage()) {  
  80.                 sb.append("<a href='" ).append(url);  
  81.                 if  (url.indexOf( "?" ) == - 1 )  
  82.                     sb.append("?page=" ).append(result.getPage().getNextPage());  
  83.                 else   
  84.                     sb.append("&page=" ).append(result.getPage().getNextPage());  
  85.                 linkParams(sb);  
  86.                 sb.append("'>" ).append( "下页" ).append( "</a>" ).append( " | " );  
  87.                 sb.append("<a href='" ).append(url);  
  88.                 if  (url.indexOf( "?" ) == - 1 )  
  89.                     sb.append("?page=" ).append(result.getPage().getTotalPage());  
  90.                 else   
  91.                     sb.append("&page=" ).append(result.getPage().getTotalPage());  
  92.                 linkParams(sb);  
  93.                 sb.append("'>" ).append( "尾页" ).append( "</a>" );  
  94.             }  
  95.             sb.append(" 跳转到:《select name='goToPage' οnchange='javascript:goPage(this.value)'》" );  
  96.             int  s = result.getPage().getTotalCount();  
  97.             for  ( int  i =  1 ; i <= s; i++) {  
  98.                 sb.append("<option value=" ).append(i);  
  99.                 if  (Integer.parseInt(page) == i)  
  100.                     sb.append(" selected" );  
  101.                 sb.append(">第" ).append(i).append( "页</option>" );  
  102.             }  
  103.             sb.append("</select>" );  
  104.             sb.append("<script language=javascript>" );  
  105.             sb.append("function goPage(page){" ).append( "window.location='" )  
  106.                     .append(url);  
  107.             if  (url.indexOf( "?" ) == - 1 )  
  108.                 sb.append("?page='+" ).append( "page" );  
  109.             else   
  110.                 sb.append("&page='+" ).append( "page" );  
  111.             sb.append("+'" );  
  112.             linkParams(sb);  
  113.             sb.append("';" );  
  114.             sb.append("}" );  
  115.             sb.append("</script>" );  
  116.         }  
  117.         try  {  
  118.             if  (sb !=  null ) {  
  119.                 JspWriter out = pageContext.getOut();  
  120.                 out.print(sb);  
  121.             }  
  122.         } catch  (Exception e) {  
  123.             throw   new  JspException(e);  
  124.         }  
  125.         return  EVAL_PAGE;  
  126.     }  
  127.      
  128.     /** */ /**  
  129.      * 链接参数处理  
  130.      * @param sb  
  131.      */   
  132.     private   void  linkParams(StringBuffer sb) {  
  133.         for  ( int  i =  0 ; i < key.size(); i++) {  
  134.             sb.append("&" ).append(key.get(i)).append( "=" ).append(  
  135.                     kv.get(key.get(i)));  
  136.         }  
  137.     }  
  138.   
  139. }  



2,标签定义文件numentag.tld

xml 代码
 
  1. <? xml    version = "1.0"    encoding = "utf-8"    ?>   
  2.  <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">   
  3. < taglib >   
  4.     < tlib-version > 1.0 </ tlib-version >   
  5.     < jsp-version > 1.2 </ jsp-version >   
  6.     < short-name > numen </ short-name >   
  7.     <!--OutputTag-->   
  8.     < tag >   
  9.         < name > out </ name >   
  10.         < tag-class > cn.cityyouth.util.NumenTag </ tag-class >   
  11.         < body-content > empty </ body-content >   
  12.         < attribute >   
  13.             < name > url </ name >   
  14.             < required > true </ required >   
  15.             < rtexprvalue > true </ rtexprvalue >   
  16.         </ attribute >   
  17.         < attribute >   
  18.             < name > result </ name >   
  19.             < required > true </ required >   
  20.             < rtexprvalue > true </ rtexprvalue >   
  21.         </ attribute >   
  22.         < attribute >   
  23.             < name > params </ name >   
  24.             < required > false </ required >   
  25.             < rtexprvalue > true </ rtexprvalue >   
  26.         </ attribute >   
  27.     </ tag >   
  28. </ taglib >   



3.js

xml 代码
 
  1. < %@ page  contentType = "text/html; charset=utf-8" % >   
  2. < %@ include  file = "/common/taglibs.jsp" % >   
  3. < %@ taglib   uri = "/WEB-INF/numentag.tld"    prefix = "n" % >   
  4. < html >   
  5. < head >   
  6. </ head >   
  7. < body >   
  8. < table >   
  9. < tr > < td >   
  10. < n:out   url = "test.do"   result = "result"   params = "${type}" />   
  11. </ td > </ tr >   
  12. </ table >   
  13. </ body >   
  14. </ html >   



源自:http://blog.csdn.net/numen_wlm/archive/2007/01/30/1497778.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值