⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 paginationtag.java

📁 Speedframework--基于类型元数据的羽量级ORM.完全基于Java类型元数据和反射机制同时不需要任何对象关系映射配置文件的轻量级ORM框架,它充分利用了类型本身的信息,使用Metadata
💻 JAVA
字号:
/**
 *
 */
package org.speedframework.tag;

import javax.servlet.http.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

import org.speedframework.entity.*;

/**
 * <p>Title: SpeedFrameworkWork持久层框架</p>
 *
 * <p>Description: 基于分页标签类</p>
 *
 * <p>Copyright: Copyright (c) 2005</p>
 *
 * <p>Company: SpeedFrameworkWork</p>
 * @author 李志峰 电话:13824431576
 * @version 1.1beta
 */
public class PaginationTag
    extends TagSupport {

  private static final long serialVersionUID = 1673491971683216709L;
  private String path = null;
  private String name = null;
  private String parameter = null;
  private String formName = null;


  public void setName(String name) {
    this.name = name;
  }


  public void setPath(String path) {
    this.path = path;
  }


  public void setParameter(String parameter) {
    this.parameter = parameter;
  }


  public void setFormName(String formName) {
    this.formName = formName;
  }


  public int doStartTag() throws JspException {
    Pagination pagination = null;

    if (this.path == null) {
      throw new NullPointerException("path is null");
    }

    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 + "is null in 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=\"First\">First</a>");
          out.println("<a class=\"pagination\" href=\"" + contextPath +
                      pagination.getPreviousPage() +
                      "\" onclick=\"paginationSubmit('" +
                      pagination.getPreviousPage() +
                      "');return false;\" title=\"Previous\">Previous</a>");
        }
        else {
          out.println("<span title=\"First\">First</span>");
          out.println("<span title=\"Previous\">Previous</span>");
        }

        if (pagination.isHasNextPage()) {
          out.println("<a class=\"pagination\" href=\"" + contextPath +
                      pagination.getNextPage() +
                      "\" onclick=\"paginationSubmit('" +
                      pagination.getNextPage() +
                      "');return false;\"  title=\"Next\">Next</a>");
          out.println("<a class=\"pagination\" href=\"" + contextPath +
                      pagination.getTotalPage() +
                      "\" onclick=\"paginationSubmit('" +
                      pagination.getTotalPage() +
                      "');return false;\" title=\"Last\">Last</a>");
        }
        else {
          out.println("<span title=\"Next\">Next</span>");
          out.println("<span title=\"Last\">Last</span>");
        }
      }
      else {
        if (pagination.isHasPreviousPage()) {
          out.println("<a class=\"pagination\" href=\"" + contextPath +
                      "1\" title=\"First\">First</a>");
          out.println("<a class=\"pagination\" href=\"" + contextPath +
                      pagination.getPreviousPage() + "\" title=\"Previous\">Previous</a>");
        }
        else {
          out.println("<span title=\"First\">First</span>");
          out.println("<span title=\"Previous\">Previous</span>");
        }

        if (pagination.isHasNextPage()) {
          out.println("<a class=\"pagination\" href=\"" + contextPath +
                      pagination.getNextPage() + "\" title=\"Next\">Next</a>");
          out.println("<a class=\"pagination\" href=\"" + contextPath +
                      pagination.getTotalPage() + "\" title=\"Last\">Last</a>");
        }
        else {
          out.println("<span title=\"Next\">Next</span>");
          out.println("<span title=\"Last\">Last</span>");
        }
      }

      out.println("&nbsp;");
      out.println("Total " + pagination.getTotalCount() + "");
      out.print("&nbsp;");
      out.println("Page " + pagination.getCount() + "");
      out.print("&nbsp;");
      out.println("Page " + pagination.getTotalPage() + " of ");
      out.print("&nbsp;");
      out.println("" + pagination.getCurrPage() + "");
      out.println("&nbsp;");
      out.println("Go to<input type=\"text\" id=\"" + this.parameter +
                  "\" class=\"textF\" size=\"3\" maxlength=\"5\">");
      out.println("&nbsp;");
      out.println("<button onclick=\"paginationGoto();\" style=\"border:1px ridge #d6edef;background-color:#ffffff\">Go</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
   * @thros 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>");
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -