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

📄 pageinfotag.java

📁 网上购物系统
💻 JAVA
字号:
// =========================================================
// 项目:宠物商店系统

// 路径:$Archive: $
// =========================================================
package example.common.tablib;

import java.util.List;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.TagSupport;

import org.apache.struts.action.ActionMapping;
import org.apache.struts.config.ModuleConfig;
import org.apache.struts.taglib.TagUtils;
import org.apache.struts.taglib.html.Constants;
import org.apache.struts.taglib.html.FormTag;

import com.shsafe.common.basic.attribute.PageInformation;

import example.common.struts.CommonActionForm;

/**
 * 翻页信息标签库。

 * 
 * @author Michael J Chane
 * @version $Revision: $ $Date: $
 */
public class PageInfoTag extends TagSupport {

  /**
   * serialVersionUID
   */
  private static final long serialVersionUID = -801596514491006062L;

  /**
   * 页号连接跨度(默认5)

   */
  private int span = 5;

  /**
   * 翻页Form在HTML中的顺序(0开始)
   */
  private int formIndex = -1;

  /**
   * 构造一个新的<code>PageInfoTag</code>对象。

   */
  public PageInfoTag() {
  }

  /**
   * 返回<code>span</code>的值。

   * 
   * @return <code>span</code>的值

   */
  public int getSpan() {
    return span;
  }

  /**
   * 设置字段<code>span</code>的值。

   * 
   * @param span
   *          要设置的<code>span<code>字段的新值

   */
  public void setSpan(int span) {
    this.span = span;
  }

  /**
   * 返回<code>formIndex</code>的值。

   * 
   * @return <code>formIndex</code>的值

   */
  public int getFormIndex() {
    return formIndex;
  }

  /**
   * 设置字段<code>formIndex</code>的值。

   * 
   * @param formIndex
   *          要设置的<code>formIndex<code>字段的新值

   */
  public void setFormIndex(int formIndex) {
    this.formIndex = formIndex;
  }

  /**
   * 生成翻页信息的HTML代码。

   * 
   * @return 跳过BODY
   * @throws JspException
   *           如果发生未知错误的话
   * @see javax.servlet.jsp.tagext.TagSupport#doStartTag()
   */
  @Override
  public int doStartTag() throws JspException {
    TagUtils tagUtils = TagUtils.getInstance();
    FormTag formTag = (FormTag) pageContext.getAttribute(Constants.FORM_KEY,
        PageContext.REQUEST_SCOPE);
    if (formTag == null) {
      throw new JspException("该标记必须位于<html:form>内!");
    }

    ModuleConfig moduleConfig = tagUtils.getModuleConfig(pageContext);
    String mappingName = tagUtils.getActionMappingName(formTag.getAction());
    ActionMapping mapping = (ActionMapping) moduleConfig
        .findActionConfig(mappingName);
    String scope = mapping.getScope();

    int lookupScope = PageContext.SESSION_SCOPE;

    if ("request".equalsIgnoreCase(scope)) {
      lookupScope = PageContext.REQUEST_SCOPE;
    }

    CommonActionForm pageForm = (CommonActionForm) pageContext.getAttribute(
	        formTag.getBeanName(), lookupScope);
    tagUtils.write(pageContext, renderPageInfo(pageForm));
    tagUtils.write(pageContext, renderPageLink(pageForm));
    tagUtils.write(pageContext, renderJavaScript(formTag, pageForm));

    return SKIP_BODY;
  }

  /**
   * 描绘页面信息的HTML代码。

   * 
   * @param pageForm
   *          ActionForm
   * @return 页面信息的HTML代码
   */
  protected String renderPageInfo(CommonActionForm pageForm) {
    PageInformation pageInfo = pageForm.getPageInfo();

    StringBuilder buff = new StringBuilder(150);
    String sp = System.getProperty("line.separator");

    buff.append("<input type=\"hidden\" name=\"pageInfo.pageNo\" value=\"")
        .append(pageInfo.getPageNo()).append("\">").append(sp);
    buff.append("<a style=\"color:#FF6600;font-size:12px\">共");
    buff.append(pageInfo.getTotalPage());
    buff.append("页</a> &nbsp;").append(sp);
    return buff.toString();
  }

  /**
   * 描绘页面连接的HTML代码。

   * 
   * @param pageForm
   *          ActionForm
   * @return 页面连接的HTML代码
   */
  protected String renderPageLink(CommonActionForm pageForm) {
    PageInformation pageInfo = pageForm.getPageInfo();

    StringBuilder buff = new StringBuilder(100 * (span * 2 + 2));
    String sp = System.getProperty("line.separator");

    buff.append("<a style=\"color:#31558c;font-size:12px\"");
    if (pageInfo.getPageNo() > 1) {
      buff.append(" href=\"javascript:turnToPage(").append(
          pageInfo.getPageNo() - 1).append(")\"");
    }
    buff.append(">上一页</a> &nbsp;").append(sp);

    List<Integer> pageSpan = pageInfo.getPageSpan(span);
    for (int pageNo : pageSpan) {
      buff.append("<a style=\"color:#31558c;font-size:12px\"");
      if (pageNo != pageInfo.getPageNo()) {
        buff.append(" href=\"javascript:turnToPage(").append(pageNo).append(
            ")\"");
      }
      buff.append(">").append(pageNo).append("</a> &nbsp;").append(sp);
    }

    buff.append("<a style=\"color:#31558c;font-size:12px\"");
    if (pageInfo.getPageNo() < pageInfo.getTotalPage()) {
      buff.append(" href=\"javascript:turnToPage(").append(
          pageInfo.getPageNo() + 1).append(")\"");
    }
    buff.append(">下一页</a> &nbsp;").append(sp);

    return buff.toString();
  }

  /**
   * @param formTag
   *          上下文中的<html:form>标签对象
   * @param pageForm
   *          ActionForm
   * @return 页面条转的JavaScript代码
   */
  protected String renderJavaScript(FormTag formTag, CommonActionForm pageForm) {
    StringBuilder buff = new StringBuilder();
    String sp = System.getProperty("line.separator");

    buff.append("<script type=\"text/javascript\" language=\"JavaScript\">")
        .append(sp);
    buff.append("<!--").append(sp);
    buff.append("  function turnToPage(pageNo) {").append(sp);

    buff.append("    var pageForm = document.");
    if (formIndex >= 0) {
      buff.append("forms[").append(formIndex).append("];").append(sp);
    } else {
      buff.append(formTag.getBeanName()).append(sp);
    }
    buff.append("    pageForm['pageInfo.pageNo'].value = pageNo;").append(sp);
    buff.append("    pageForm.submit();").append(sp);
    buff.append("  }").append(sp);
    buff.append("//-->").append(sp);
    buff.append("</script>").append(sp);

    return buff.toString();
  }
}

⌨️ 快捷键说明

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