简易java分页标签

简易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' onchange='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.youkuaiyun.com/numen_wlm/archive/2007/01/30/1497778.aspx
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值