本站不再更新,歡迎光臨 java開發技術網
          隨筆-230  評論-230  文章-8  trackbacks-0

          /**
          ?*
          ?*/
          package com.scitel.gdnumcommon.ctag;

          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.jsp.JspException;
          import javax.servlet.jsp.JspWriter;
          import javax.servlet.jsp.tagext.TagSupport;

          import com.scitel.gdnumcommon.entity.Pagination;

          /**
          ?*
          ?*
          ?* <p>Description: 分頁標簽類</p>
          ?*
          ?* <p>Copyright: Copyright (c) 2006</p>
          ?*
          ?* <p>Company: 深圳科訊數碼有限公司</p>
          ?*
          ?* @author?
          ?* @version 1.0 時間 Mar 6, 2006
          ?*/
          public class PaginationTag extends TagSupport {
          ?/**
          ? * 唯一ID
          ? */
          ?private static final long serialVersionUID = 1673491971683216709L;
          ??? /**
          ???? * 鏈接路徑
          ???? */
          ?private String path = null;
          ?/**
          ? * 分頁類保存在request中的名稱,與類名相同
          ? */
          ?private String name = null;
          ?/**
          ? * 所帶參數名稱(page)
          ? */
          ?private String parameter = null;
          ?/**
          ? *表單名稱
          ? */
          ?private String formName = null;
          ?
          ?/**
          ? * @param name The name to set.
          ? */
          ?public void setName(String name) {
          ??this.name = name;
          ?}
          ?/**
          ? * @param path The path to set.
          ? */
          ?public void setPath(String path) {
          ??this.path = path;
          ?}
          ?
          ?/**
          ? * @param parameter The parameter to set.
          ? */
          ?public void setParameter(String parameter) {
          ??this.parameter = parameter;
          ?}
          ?
          ?/**
          ? * @param formName The formName to set.
          ? */
          ?public void setFormName(String formName) {
          ??this.formName = formName;
          ?}
          ?
          ?/* (non-Javadoc)
          ? * @see javax.servlet.jsp.tagext.TagSupport#doStartTag()
          ? */
          ?public int doStartTag() throws JspException {
          ??// TODO Auto-generated method stub
          ??Pagination pagination = null;

          ??if(this.path == null){
          ???throw new NullPointerException("path屬性不能為空");
          ??}
          ??
          ??if(this.name == null){
          ???this.name = "pagination";
          ??}
          ??
          ??if(this.parameter == null){
          ???this.parameter = "page";
          ??}
          ??
          ??pagination = (Pagination)pageContext.getRequest().getAttribute(name);
          ??
          ??if(pagination == null) {
          ???throw new NullPointerException(name + "在request中為空!");
          ??}
          ??
          ??try{
          ???JspWriter out = pageContext.getOut();

          ???String contextPath = encodeURL(this.path, this.parameter);
          ???if(this.formName != null && this.formName.length() > 0){
          ????if(pagination.isHasPreviousPage()){
          ?????out.println("<a class=\"pagination\" href=\"" + contextPath + "1\" onclick=\"paginationSubmit('1');return false;\" title=\"第一頁\">第一頁</a>");
          ?????out.println("<a class=\"pagination\" href=\"" + contextPath + pagination.getPreviousPage() + "\" onclick=\"paginationSubmit('" + pagination.getPreviousPage() + "');return false;\" title=\"上一頁\">上一頁</a>");
          ????}else{
          ?????out.println("<span title=\"第一頁\">第一頁</span>");
          ?????out.println("<span title=\"上一頁\">上一頁</span>");
          ????}
          ????
          ????if(pagination.isHasNextPage()){
          ?????out.println("<a class=\"pagination\" href=\"" + contextPath + pagination.getNextPage() + "\" onclick=\"paginationSubmit('" + pagination.getNextPage() + "');return false;\"? title=\"下一頁\">下一頁</a>");
          ?????out.println("<a class=\"pagination\" href=\"" + contextPath + pagination.getTotalPage() + "\" onclick=\"paginationSubmit('" + pagination.getTotalPage() + "');return false;\" title=\"最后一頁\">最后一頁</a>");
          ????}else{
          ?????out.println("<span title=\"下一頁\">下一頁</span>");
          ?????out.println("<span title=\"最后一頁\">最后一頁</span>");
          ????}
          ???}else{
          ????if(pagination.isHasPreviousPage()){
          ?????out.println("<a class=\"pagination\" href=\"" + contextPath + "1\" title=\"第一頁\">第一頁</a>");
          ?????out.println("<a class=\"pagination\" href=\"" + contextPath + pagination.getPreviousPage() + "\" title=\"上一頁\">上一頁</a>");
          ????}else{
          ?????out.println("<span title=\"第一頁\">第一頁</span>");
          ?????out.println("<span title=\"上一頁\">上一頁</span>");
          ????}
          ????
          ????if(pagination.isHasNextPage()){
          ?????out.println("<a class=\"pagination\" href=\"" + contextPath + pagination.getNextPage() + "\" title=\"下一頁\">下一頁</a>");
          ?????out.println("<a class=\"pagination\" href=\"" + contextPath + pagination.getTotalPage() + "\" title=\"最后一頁\">最后一頁</a>");
          ????}else{
          ?????out.println("<span title=\"下一頁\">下一頁</span>");
          ?????out.println("<span title=\"最后一頁\">最后一頁</span>");
          ????}
          ???}
          ???
          ???out.println("&nbsp;");
          ???out.println("共有" + pagination.getTotalCount() + "條");
          ???out.print("&nbsp;");
          ???out.println("每頁" + pagination.getCount() + "條");
          ???out.print("&nbsp;");
          ???out.println("共" + pagination.getTotalPage() + "頁");
          ???out.print("&nbsp;");
          ???out.println("本頁是第" + pagination.getCurrPage() + "頁");
          ???out.println("&nbsp;");
          ???out.println("跳轉到第<input type=\"text\" id=\"" + this.parameter + "\" class=\"input1\" size=\"3\" maxlength=\"5\">頁");
          ???out.println("&nbsp;");
          ???out.println("<button onclick=\"paginationGoto();\" class=\"buttonbg\">跳轉</button>");
          ???out.println("<br />");
          ???/*創建CSS內容*/
          ???createCSS(out);
          ???if(this.formName != null && this.formName.length() > 0) {
          ????/*創建js內容*/
          ????createJS(out, contextPath, pagination.getTotalPage());
          ???}else{
          ????createNoFormJS(out, this.path, pagination.getTotalPage());
          ???}
          ???out.println();
          ??}catch(Exception e){
          ???throw new JspException(e);
          ??}
          ??
          ??return SKIP_BODY;
          ?}
          ?
          ?/* (non-Javadoc)
          ? * @see javax.servlet.jsp.tagext.TagSupport#doEndTag()
          ? */
          ?public int doEndTag() throws JspException {
          ??// TODO Auto-generated method stub
          ??return EVAL_PAGE;
          ?}
          ?
          ?/**
          ? * 改變URL使它能訪問到action或servlet中去
          ? * @param href 從頁面傳來的href
          ? * @param param
          ? * @param queryStr 查詢內容
          ? * @return
          ? * @author?
          ? */
          ?private final String encodeURL(String href, String param){
          ??StringBuffer buffer = new StringBuffer(100);
          ??
          ??HttpServletRequest request =
          ???(HttpServletRequest)this.pageContext.getRequest();
          ??buffer.append(request.getContextPath() + "/" + href);

          ??// 判斷是否已經帶有?號
          ??int question = href.indexOf("?");
          ??if(question > 0 ){
          ???buffer.append("&" + param + "=");
          ??}else{
          ???buffer.append("?" + param + "=");
          ??}
          ??
          ??return buffer.toString();
          ?}
          ?
          ?/**
          ? * 創建js內容如果提交form就用js提交
          ? * @param out
          ? * @param contextPath
          ? * @throws Exception
          ? * @author?
          ? */
          ?private final void createJS(JspWriter out, String contextPath, int totalPage) throws Exception {
          ??out.println("<script language=\"javascript\">");
          ??out.println("function paginationSubmit(pageNum_) { ");
          ??out.println("? document." + formName + ".action=\'" + contextPath + "\' + pageNum_ + \'\';");
          ??out.println("? document." + formName + ".submit();");
          ??out.println("}");
          ??/*跳轉內容*/
          ??HttpServletRequest request =
          ???(HttpServletRequest)this.pageContext.getRequest();
          ??String contPath = request.getContextPath() + "/" + this.path;
          ??out.println("function paginationGoto() { ");
          ??out.println("? if(!controlNotNull(document.all." + this.parameter + ", '跳轉頁面')) {");
          ??out.println("??? return;");
          ??out.println("? }");
          ??out.println("? ");
          ??out.println("? if(!controlIsInt(document.all." + this.parameter + ", '跳轉頁面')) {");
          ??out.println("??? return;");
          ??out.println("? }");
          ??out.println("? ");
          ??out.println("? pageNum_ = document.all." + this.parameter + ".value");
          ??out.println("? if(pageNum_ > 0 && pageNum_ <= " + totalPage + ") {");
          ??out.println("??? document." + formName + ".action=\'" + contPath + "&" + this.parameter + "=\' + pageNum_ + \'\';");
          ??out.println("??? document." + formName + ".submit();");
          ??out.println("? } else { ");
          ??out.println("??? alert(\"您輸入的頁數超出范圍\");");
          ??out.println("? }");
          ??out.println("}");
          ??out.println("</script>");
          ??out.println();
          ?}
          ?
          ?/**
          ? * 創建沒有form時的js
          ? * @param out
          ? * @param contextPath
          ? * @throws Exception
          ? * @author?
          ? */
          ?private final void createNoFormJS(JspWriter out, String href, int totalPage) throws Exception {
          ??HttpServletRequest request =
          ???(HttpServletRequest)this.pageContext.getRequest();
          ??String contPath = request.getContextPath() + "/" + href;

          ??out.println("<script language=\"javascript\">");
          ??out.println("function paginationGoto() { ");
          ??out.println("? if(!controlNotNull(document.all." + this.parameter + ", '跳轉頁面')) {");
          ??out.println("??? return;");
          ??out.println("? }");
          ??out.println("? ");
          ??out.println("? if(!controlIsInt(document.all." + this.parameter + ", '跳轉頁面')) {");
          ??out.println("??? return;");
          ??out.println("? }");
          ??out.println("? ");
          ??out.println("? pageNum_ = document.all." + this.parameter + ".value");
          ??out.println("? if(pageNum_ > 0 && pageNum_ <= " + totalPage + ") {");
          ??out.println("??? document.location.href=\'" + contPath + "&" + this.parameter + "=\' + pageNum_ + \'\';");
          ??out.println("? } else { ");
          ??out.println("??? alert(\"您輸入的頁數超出范圍\");");
          ??out.println("? }");
          ??out.println("}");
          ??out.println("</script>");
          ??out.println();
          ?}
          ?
          ?/**
          ? * 創建css內容
          ? * @param out
          ? * @throws Exception
          ? * @author?

          ? */
          ?private final void createCSS(JspWriter out)throws Exception {
          ??out.println("<style type=\"text/css\">");
          ??out.println("a.pagination:visited { text-decoration: underline; color: #808080; } ");//#CCCCFF #c0c0c0
          ??out.println("a.pagination:link { text-decoration: underline; color: blue; } ");
          ??out.println("a.pagination:hover { text-decoration: none; color: #009933; } ");
          ??out.println("a.pagination:active { text-decoration: none; color: orangered; } ");
          ??out.println("</style>");
          ?}
          }
          ========================================
          <?xml version="1.0" encoding="UTF-8"?>

          <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
          ?"<taglib>
          ??? <tlib-version>1.0</tlib-version>
          ?<jsp-version>1.2</jsp-version>
          ?<short-name>page</short-name>
          ?<description>
          ?@author
          ?pagination page 1-10
          ?</description>

          ?<tag>
          ??<name>pagination</name>
          ??<tag-class>com.scitel.gdnumcommon.ctag.PaginationTag</tag-class>
          ??<body-content>empty</body-content>

          ??<attribute>
          ???<name>path</name>
          ???<required>true</required>
          ???<rtexprvalue>true</rtexprvalue>
          ??</attribute>

          ??<attribute>
          ???<name>name</name>
          ???<required>false</required>
          ???<rtexprvalue>true</rtexprvalue>
          ??</attribute>

          ??<attribute>
          ???<name>parameter</name>
          ???<required>false</required>
          ???<rtexprvalue>true</rtexprvalue>
          ??</attribute>
          ??
          ??<attribute>
          ???<name>formName</name>
          ???<required>false</required>
          ???<rtexprvalue>true</rtexprvalue>
          ??</attribute>

          ?</tag>
          </taglib>
          =============================
          頁面使用代碼
          ??<Td align="right" colspan="10">
          ??<page:pagination path="wfProcAction.do?method=queryWorkFlow" name="pagination" parameter="page" formName="form1" />
          ??</Td>
          ===============================================
          Action 類中使用代碼
          ???? String page = request.getParameter("page");
          ???? Pagination pagination = new Pagination();
          ???? pagination.setTotalCount(didWf.size());
          ????
          ???????????????? if (page != null && page.length() > 0) {
          ????????? pagination.setPage(Integer.parseInt(page));
          ???? }else {
          ????????? pagination.setPage(1);
          ???? }
          ???????????????? int page_=pagination.getPage();
          ???????????????? int row_start=(page_*pagination.getCount())-pagination.getCount();
          ???????????????? int row_end=page_*pagination.getCount();
          ???????????????? if(row_end>didWf.size()) {
          ??????????????? ? row_end=didWf.size();
          ???????????????? }
          ???????????????? List datalist=didWf.subList(row_start,row_end);
          ???????????????? request.setAttribute("wkList",datalist);
          ????????????????
          ???????????????? request.setAttribute("pagination", pagination);
          ===============================


          評論:
          # re: 一個自定義分頁標簽 2007-06-10 19:58 | kbfox
          似乎不太完整啊  回復  更多評論
            
          本站不再更新,歡迎光臨 java開發技術網
          主站蜘蛛池模板: 涞源县| 喀喇| 和龙市| 汉阴县| 喀什市| 寿光市| 都匀市| 颍上县| 沾益县| 建德市| 大冶市| 西宁市| 读书| 潞城市| 石景山区| 大悟县| 年辖:市辖区| 汉源县| 蒙自县| 从江县| 余庆县| 南靖县| 乐昌市| 武汉市| 安吉县| 鄂托克旗| 沈阳市| 秦安县| 中宁县| 仪陇县| 阳原县| 岳池县| 江都市| 师宗县| 长丰县| 惠水县| 韩城市| 遵化市| 常州市| 龙泉市| 南靖县|