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

📄 pagetag.java

📁 java论坛
💻 JAVA
字号:
package com.laoer.bbscs.web.taglib;

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

import org.apache.commons.lang.*;
import org.apache.struts.taglib.*;
import com.laoer.bbscs.service.web.*;

/**
 * <p>Title: Tianyi BBS</p>
 *
 * <p>Description: BBSCS</p>
 *
 * <p>Copyright: Copyright (c) 2006</p>
 *
 * <p>Company: Laoer.com</p>
 *
 * @author Gong Tianyi
 * @version 7.0
 */
public class PageTag
    extends TagSupport {

  protected String name = "";

  protected String styleClass = "";

  protected String property = null;

  protected String scope = null;

  protected String argPage = "page";

  protected String argTotal = "total";

  protected int pageSep = 10;

  protected String javaScript = "";

  public PageTag() {
  }

  public int doStartTag() throws JspException {
    return (SKIP_BODY);
  }

  public int doEndTag() throws JspException {
    Pages pages;
    Object value = TagUtils.getInstance().lookup(pageContext, name, property, scope);
    if (value == null) {
      return (SKIP_BODY);
    }
    pages = (Pages) value;

    String fileName = pages.getFileName();
    if (fileName.indexOf("?") == -1) {
      fileName = fileName + "?";
    }
    else {
      if (!fileName.endsWith("&")) {
        fileName = fileName + "&";
      }
    }

    //一行显示页数
    int pagesep = this.pageSep;
    //总行数
    int allpagesep = (int) Math.ceil( (pages.getAllPage() + pagesep - 1) / pagesep);
    //当前行数
    int cpagesep = (int) Math.ceil( (pages.getCpage() + pagesep - 1) / pagesep);
    //当前一行显示页数
    int cnum;
    if (pages.getAllPage() > 0) {
      //在页中
      if (cpagesep != allpagesep) {
        cnum = pagesep;
      }
      //页末
      else {
        cnum = pages.getAllPage() % pagesep;
        //正好整除
        if (cnum == 0) {
          cnum = pagesep;
        }
      }
    }
    else {
      cnum = 0;
    }
    //System.out.println("cpage:" + pages.getCpage() + " cpagesep:" + cpagesep + " allpagesep:" + allpagesep);

    StringBuffer sb = new StringBuffer();

    if (StringUtils.isBlank(this.javaScript)) {

      /**
       * previous butten ,append to
       * <a href='xxx.lt?page=x&t=x'><img></a>
       */
      sb.append("<span");

      if (StringUtils.isNotBlank(this.styleClass)) {
        sb.append(" class=\"");
        sb.append(this.styleClass);
        sb.append("\"");
      }
      sb.append(">");

      if (cpagesep > 1) {
        sb.append("<a href=\"");
        sb.append(fileName);
        sb.append(this.getArgPage());
        sb.append("=1&");
        sb.append(this.argTotal);
        sb.append("=");
        sb.append(pages.getTotalNum());
        sb.append("\">");
        //sb.append("|&lt;");
        sb.append("&laquo;");
        sb.append("</a>");

        sb.append(" <a href=\"");
        sb.append(fileName);
        sb.append(this.getArgPage());
        sb.append("=");
        //往前一行
        int previous;
        if (pages.getCpage() <= 1) {
          previous = 1;
        }
        else {
          previous = pages.getCpage() - 1;
        }
        sb.append(previous);
        //sb.append("&total=");
        sb.append("&");
        sb.append(this.argTotal);
        sb.append("=");
        sb.append(pages.getTotalNum());
        sb.append("\">");
        //sb.append("&lt;");
        sb.append("&#8249;");
        sb.append("</a>");

      }

      /**
       * middle butten ,append to
       * <a href='xxx.lt?page=x&t=x'><img></a>
       */
      for (int i = 0; i < cnum; i++) {
        sb.append(" <a href=\"");

        sb.append(fileName);
        sb.append(this.getArgPage());
        sb.append("=");

        sb.append( ( (i + 1) + ( (cpagesep - 1) * pagesep)));
        sb.append("&");
        sb.append(this.argTotal);
        sb.append("=");
        sb.append(pages.getTotalNum());
        sb.append("\">");
        if (pages.getCpage() == (i + 1) + ( (cpagesep - 1) * pagesep)) {
          sb.append("<strong>");
          sb.append( (i + 1) + ( (cpagesep - 1) * pagesep));
          sb.append("</strong>");
        }
        else {
          sb.append( ( (i + 1) + ( (cpagesep - 1) * pagesep)));
        }
        sb.append("</a>");
      }
      /**
       * next butten ,append to
       * <a href='xxx.lt?page=x&t=x'><img></a>
       */


      if (cpagesep < allpagesep) {

        sb.append(" <a href=\"");
        //sb.append(pages.getFileName());
        sb.append(fileName);
        sb.append(this.getArgPage());
        sb.append("=");
        //sb.append("page=");
        int next;
        if (pages.getCpage() >= pages.getAllPage()) {
          next = (int) pages.getAllPage();
        }
        else {
          next = pages.getCpage() + 1;
        }
        sb.append(next);
        sb.append("&");
        sb.append(this.argTotal);
        sb.append("=");
        //sb.append("&t=");
        sb.append(pages.getTotalNum());
        sb.append("\">");
        //sb.append("&gt;");
        sb.append("&#8250;");
        sb.append("</a> ");

        sb.append(" <a href=\"");
        //sb.append(pages.getFileName());
        sb.append(fileName);
        sb.append(this.getArgPage());
        sb.append("=");
        //sb.append("page=");
        sb.append(pages.getAllPage());
        sb.append("&");
        sb.append(this.argTotal);
        sb.append("=");
        //sb.append("&t=");
        sb.append(pages.getTotalNum());
        sb.append("\">");
        //sb.append("&gt;|");
        sb.append("&raquo;");
        sb.append("</a>");
      }
      sb.append("</span>");

    }
    else {

      /**
       * previous butten ,append to
       * <a href='xxx.lt?page=x&t=x'><img></a>
       */
      sb.append("<span");

      if (StringUtils.isNotBlank(this.styleClass)) {
        sb.append(" class=\"");
        sb.append(this.styleClass);
        sb.append("\"");
      }
      sb.append(">");

      if (cpagesep > 1) {
        sb.append("<a href=\"javascript:;\" onclick=\"");
        sb.append(this.javaScript);
        sb.append("('");
        sb.append(fileName);
        sb.append(this.getArgPage());
        sb.append("=1&");
        sb.append(this.argTotal);
        sb.append("=");
        sb.append(pages.getTotalNum());
        sb.append("');\">");
        //sb.append("|&lt;");
        sb.append("&laquo;");
        sb.append("</a>");

        //sb.append(" <a href=\"");
        sb.append(" <a href=\"javascript:;\" onclick=\"");
        sb.append(this.javaScript);
        sb.append("('");

        sb.append(fileName);
        sb.append(this.getArgPage());
        sb.append("=");
        //往前一行
        int previous;
        if (pages.getCpage() <= 1) {
          previous = 1;
        }
        else {
          previous = pages.getCpage() - 1;
        }
        sb.append(previous);
        //sb.append("&total=");
        sb.append("&");
        sb.append(this.argTotal);
        sb.append("=");
        sb.append(pages.getTotalNum());
        //sb.append("\">");
        sb.append("');\">");
        //sb.append("&lt;");
        sb.append("&#8249;");
        sb.append("</a>");

      }

      /**
       * middle butten ,append to
       * <a href='xxx.lt?page=x&t=x'><img></a>
       */
      for (int i = 0; i < cnum; i++) {
        //sb.append(" <a href=\"");
        sb.append(" <a href=\"javascript:;\" onclick=\"");
        sb.append(this.javaScript);
        sb.append("('");
        sb.append(fileName);
        sb.append(this.getArgPage());
        sb.append("=");

        sb.append( ( (i + 1) + ( (cpagesep - 1) * pagesep)));
        sb.append("&");
        sb.append(this.argTotal);
        sb.append("=");
        sb.append(pages.getTotalNum());
        //sb.append("\">");
        sb.append("');\">");
        if (pages.getCpage() == (i + 1) + ( (cpagesep - 1) * pagesep)) {
          sb.append("<strong>");
          sb.append( (i + 1) + ( (cpagesep - 1) * pagesep));
          sb.append("</strong>");
        }
        else {
          sb.append( ( (i + 1) + ( (cpagesep - 1) * pagesep)));
        }
        sb.append("</a>");
      }
      /**
       * next butten ,append to
       * <a href='xxx.lt?page=x&t=x'><img></a>
       */


      if (cpagesep < allpagesep) {

        //sb.append(" <a href=\"");
        //sb.append(pages.getFileName());
        sb.append(" <a href=\"javascript:;\" onclick=\"");
        sb.append(this.javaScript);
        sb.append("('");

        sb.append(fileName);
        sb.append(this.getArgPage());
        sb.append("=");
        //sb.append("page=");
        int next;
        if (pages.getCpage() >= pages.getAllPage()) {
          next = (int) pages.getAllPage();
        }
        else {
          next = pages.getCpage() + 1;
        }
        sb.append(next);
        sb.append("&");
        sb.append(this.argTotal);
        sb.append("=");
        //sb.append("&t=");
        sb.append(pages.getTotalNum());
        //sb.append("\">");
        sb.append("');\">");

        //sb.append("&gt;");
        sb.append("&#8250;");
        sb.append("</a> ");

        //sb.append("<a href=\"");

        //sb.append(pages.getFileName());
        sb.append(" <a href=\"javascript:;\" onclick=\"");
        sb.append(this.javaScript);
        sb.append("('");

        sb.append(fileName);
        sb.append(this.getArgPage());
        sb.append("=");
        //sb.append("page=");
        sb.append(pages.getAllPage());
        sb.append("&");
        sb.append(this.argTotal);
        sb.append("=");
        //sb.append("&t=");
        sb.append(pages.getTotalNum());
        //sb.append("\">");
        sb.append("');\">");
        //sb.append("&gt;|");
        sb.append("&raquo;");
        sb.append("</a>");
      }
      sb.append("</span>");

    }

    TagUtils.getInstance().write(pageContext, sb.toString());
    return (SKIP_BODY);
  }

  public String getName() {

    return name;
  }

  public String getStyleClass() {
    return styleClass;
  }

  public String getProperty() {
    return property;
  }

  public String getScope() {
    return scope;
  }

  public String getArgPage() {
    return argPage;
  }

  public String getArgTotal() {
    return argTotal;
  }

  public int getPageSep() {
    return pageSep;
  }

  public String getJavaScript() {
    return javaScript;
  }

  public void setName(String name) {

    this.name = name;
  }

  public void setStyleClass(String styleClass) {
    this.styleClass = styleClass;
  }

  public void setProperty(String property) {
    this.property = property;
  }

  public void setScope(String scope) {
    this.scope = scope;
  }

  public void setArgPage(String argPage) {
    this.argPage = argPage;
  }

  public void setArgTotal(String argTotal) {
    this.argTotal = argTotal;
  }

  public void setPageSep(int pageSep) {
    this.pageSep = pageSep;
  }

  public void setJavaScript(String javaScript) {
    this.javaScript = javaScript;
  }
}

⌨️ 快捷键说明

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