JSP分頁之-分頁標籤類

來源:互聯網
上載者:User
package com.dbtemplate.tag;

import java.io.IOException;

import javax.servlet.http.HttpSession;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

import org.apache.log4j.Logger;

import com.dbtemplate.domain.PageInfo;

/** *//**
 * <pre>
 * PaginationTag是一個JSP自訂標籤,它的功能如下:
 * ·為頁面提供分頁資訊
 * 
 * 它的處理流程如下:
 * ·擷取存放在Session中的PageInfo對象
 * ·根據PageInfo中的一系列標誌列印分頁資訊
 * 
 * </pre>
 * 
 * @author peng
 * 
 */
public class PaginationTag extends TagSupport ...{

    static Logger logger = Logger.getLogger(PaginationTag.class.getName());

    static final String baseUrl = "<a href = "user.jsp?";

    static final String endTag = "</a>";

    /**//*
     * 第<%=intPage%>頁 共<%=intPageCount%>頁(共<%=intRowCount%>條記錄)
     * 
     * <!--顯示首頁連結--> <a href = "user.jsp?">首頁</a>
     * 
     * <!--顯示上一頁連結--> <% if(intPage>1){ %> <a href = "user.jsp?page=<%=intPage-1%>">上一頁</a>
     * <%}%>
     * 
     * <!--顯示下一頁連結--> <% if(intPage<intPageCount){%> <a href = "user.jsp?page=<%=intPage+1%>">下一頁</a>
     * <%}%>
     * 
     * <!--顯示末頁連結--> <a href = "user.jsp?page=<%=intPageCount%>">末頁</a>
     * 
     * <!--顯示重新整理資料連結--> <a onclick = "javascipt:window.location.reload();"
     * onmouseover = "this.style.textDecoration = 'underline';" onmouseout =
     * "this.style.testDecoration = 'none';" style = "cursor:hand;" >重新整理資料</a>
     */

    public int doEndTag() throws JspException ...{

        logger.debug("Start to handle Pagination infomatin.");
        // 擷取儲存在Session中的PageInfo對象
        HttpSession session = pageContext.getSession();
        PageInfo pageInfo = (PageInfo) session.getAttribute("page");
        
        // 根據PageInfo中的資訊顯示分頁資訊
        JspWriter writer = pageContext.getOut();
        StringBuffer output = new StringBuffer();
        
        // 頁數顯示
        output.append(" 第").append(pageInfo.getCurrentPageNo()).append("頁 ");
        output.append(" (共").append(pageInfo.getTotalRecords()).append("條記錄)");
        
        // 首頁連結
        output.append(baseUrl).append("">").append("首頁").append(endTag);
        
        // 上一頁連結
        if (pageInfo.isHasPreviousPage()) ...{
            output.append(baseUrl).append("page=").append(
                    pageInfo.getPreviousPageNo()).append("">").append("上一頁")
                    .append(endTag);
        }
        
        // 下一頁連結
        if (pageInfo.isHasNextPage()) ...{
            output.append(baseUrl).append("page=").append(
                    pageInfo.getNextPageNo()).append("">").append("下一頁")
                    .append(endTag);
        }
        
        // 末頁連結
        output.append(baseUrl).append("page=").append(pageInfo.getTotalPages())
                .append("">").append("末頁").append(endTag);
        
        // 重新整理頁面連結
        output.append("<a onclik = "javascript:window.location.reload();"");
        output
                .append(" onmouseover = "this.style.textDecoration = 'underline;"");
        output.append(" onmouseout = "this.style.textDecoration = 'none';"");
        output.append(" style = "cursor:hand;"");
        output.append("重新整理");
        output.append(endTag);

        // 列印分頁資訊
        try ...{
            writer.println(output);
        } catch (IOException ioe) ...{
            logger.error("Error occured when handle paginatin informatin.");
            throw new JspException(ioe.getMessage());
        }

        return SKIP_BODY;
    }
}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.