自定义标签分页,标签分页,.tld<?xml ve
分享于 点击 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
用户点评