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;
}
}