欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

自定义标签分页,标签分页,.tld<?xml ve

来源: javaer 分享于  点击 11496 次 点评:40

自定义标签分页,标签分页,.tld

.tld

<?xml version="1.0" encoding="utf-8" ?>

<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

<taglib>

<tlib-version>2.5</tlib-version>

<jsp-version>1.2</jsp-version>

<short-name>mypage</short-name>

<uri>http://www.xiaoyun.test</uri>

<tag>

<name>page</name>

<tag-class>com.ssh2.util.PageTag</tag-class>

<body-content>pg</body-content>

<attribute>

<name>url</name>

<required>true</required>

<rtexprvalue>true</rtexprvalue>

</attribute>

</tag>

</taglib>

package com.ssh2.util;import java.io.IOException;import javax.servlet.http.HttpServletRequest;import javax.servlet.jsp.JspException;import javax.servlet.jsp.JspWriter;import javax.servlet.jsp.tagext.TagSupport;public class PageTag extends TagSupport {    private String url;    public String getUrl() {        return url;    }    public void setUrl(String url) {        this.url = url;    }    @Override    public int doEndTag() throws JspException {        return this.EVAL_PAGE;    }    @Override    public int doStartTag() throws JspException {        // 获得当前页面对应的Request对象        HttpServletRequest request = (HttpServletRequest) pageContext                .getRequest();        // 获得当前保存Request对象中pageBean        Pager pager = (Pager) request.getAttribute("pager");        // out--->JspWriter        JspWriter out = pageContext.getOut();        StringBuilder s = new StringBuilder();            s.append("共"+((pager.getSize()-1)/pager.getLength()+1)+"页   ");                 if (pager.getSize() >pager.getLength()) {        String pref; // 前缀        if (url.indexOf("?") > -1) {            // 如果url中已经包含了其他的参数,就把offset参数接在后面            pref = "&";        } else {            // 如果url中没有别的参数            pref = "?";        }        // 如果导航条包含header        if (pager.getPageHeader() != null && pager.getPageHeader().length() > 0) {        }        // 如果不是第一页,导航条将包含“<<”(第一页)和“<”(前一页)        if (pager.getOffset() > 0) {            s.append( "<a href='" + url + pref                    + "current=0'>[首页]</a>\\n" + "<a href='" + url + pref                    + "current=" + (pager.getOffset() - pager.getLength()) + "'>[<]</a>\\n");        }        // 导航条中,排头的那一页的current值        int startOffset;        // 位于导航条中间的那一页的current值(索引值)        int radius = Constants.MAX_PAGE_INDEX / 2 * pager.getLength();        // 如果当前的current值小于索引值        if (pager.getOffset() < radius                || pager.pageCount() <= Constants.MAX_PAGE_INDEX) {            // 那么第一页排头            startOffset = 0;        } else if (pager.getOffset() < pager.getSize() - radius) {            startOffset = pager.getOffset() - radius;        } else {            startOffset = (pager.getSize() / pager.getLength() - Constants.MAX_PAGE_INDEX)                    * pager.getLength();        }        for (int i = startOffset; i < pager.getSize()                && i < startOffset + Constants.MAX_PAGE_INDEX * pager.getLength(); i += pager.getLength()) {            if (i == pager.getOffset()) {                // 当前页号,加粗显示                s.append( "<b>" + (i / pager.getLength() + 1) + "</b>\\n");            } else {                // 其他页号,包含超链接                s.append( "<a href='" + url + pref + "current=" + i                        + "'>" + (i / pager.getLength() + 1) + "</a>\\n");            }        }        // 如果不是最后一页,导航条将包含“>”(下一页)和“>>”(最后一页)        if (pager.getOffset() < pager.getSize() - pager.getLength()) {            s.append( "<a href='" + url + pref + "current="                    + (pager.getOffset() + pager.getLength()) + "'>[>]</a>\\n" + "<a href='"                    + url + pref + "current=" + pager.lastPageOffset()                    + "'>[尾页]</a>\\n");        }    }    // 记录不超过一页,不需要分页    else {        s.append("  ");    }        s.append("  "+pager.getSize()+"条记录");        try {            out.println(s.toString());        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return this.SKIP_BODY;    }}//该片段来自于http://byrx.net

相关栏目:

用户点评