/**
?*
?*/
package com.scitel.gdnumcommon.ctag;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
import com.scitel.gdnumcommon.entity.Pagination;
/**
?*
?*
?* <p>Description: 分頁標簽類</p>
?*
?* <p>Copyright: Copyright (c) 2006</p>
?*
?* <p>Company: 深圳科訊數碼有限公司</p>
?*
?* @author?
?* @version 1.0 時間 Mar 6, 2006
?*/
public class PaginationTag extends TagSupport {
?/**
? * 唯一ID
? */
?private static final long serialVersionUID = 1673491971683216709L;
??? /**
???? * 鏈接路徑
???? */
?private String path = null;
?/**
? * 分頁類保存在request中的名稱,與類名相同
? */
?private String name = null;
?/**
? * 所帶參數名稱(page)
? */
?private String parameter = null;
?/**
? *表單名稱
? */
?private String formName = null;
?
?/**
? * @param name The name to set.
? */
?public void setName(String name) {
??this.name = name;
?}
?/**
? * @param path The path to set.
? */
?public void setPath(String path) {
??this.path = path;
?}
?
?/**
? * @param parameter The parameter to set.
? */
?public void setParameter(String parameter) {
??this.parameter = parameter;
?}
?
?/**
? * @param formName The formName to set.
? */
?public void setFormName(String formName) {
??this.formName = formName;
?}
?
?/* (non-Javadoc)
? * @see javax.servlet.jsp.tagext.TagSupport#doStartTag()
? */
?public int doStartTag() throws JspException {
??// TODO Auto-generated method stub
??Pagination pagination = null;
??if(this.path == null){
???throw new NullPointerException("path屬性不能為空");
??}
??
??if(this.name == null){
???this.name = "pagination";
??}
??
??if(this.parameter == null){
???this.parameter = "page";
??}
??
??pagination = (Pagination)pageContext.getRequest().getAttribute(name);
??
??if(pagination == null) {
???throw new NullPointerException(name + "在request中為空!");
??}
??
??try{
???JspWriter out = pageContext.getOut();
???String contextPath = encodeURL(this.path, this.parameter);
???if(this.formName != null && this.formName.length() > 0){
????if(pagination.isHasPreviousPage()){
?????out.println("<a class=\"pagination\" href=\"" + contextPath + "1\" onclick=\"paginationSubmit('1');return false;\" title=\"第一頁\">第一頁</a>");
?????out.println("<a class=\"pagination\" href=\"" + contextPath + pagination.getPreviousPage() + "\" onclick=\"paginationSubmit('" + pagination.getPreviousPage() + "');return false;\" title=\"上一頁\">上一頁</a>");
????}else{
?????out.println("<span title=\"第一頁\">第一頁</span>");
?????out.println("<span title=\"上一頁\">上一頁</span>");
????}
????
????if(pagination.isHasNextPage()){
?????out.println("<a class=\"pagination\" href=\"" + contextPath + pagination.getNextPage() + "\" onclick=\"paginationSubmit('" + pagination.getNextPage() + "');return false;\"? title=\"下一頁\">下一頁</a>");
?????out.println("<a class=\"pagination\" href=\"" + contextPath + pagination.getTotalPage() + "\" onclick=\"paginationSubmit('" + pagination.getTotalPage() + "');return false;\" title=\"最后一頁\">最后一頁</a>");
????}else{
?????out.println("<span title=\"下一頁\">下一頁</span>");
?????out.println("<span title=\"最后一頁\">最后一頁</span>");
????}
???}else{
????if(pagination.isHasPreviousPage()){
?????out.println("<a class=\"pagination\" href=\"" + contextPath + "1\" title=\"第一頁\">第一頁</a>");
?????out.println("<a class=\"pagination\" href=\"" + contextPath + pagination.getPreviousPage() + "\" title=\"上一頁\">上一頁</a>");
????}else{
?????out.println("<span title=\"第一頁\">第一頁</span>");
?????out.println("<span title=\"上一頁\">上一頁</span>");
????}
????
????if(pagination.isHasNextPage()){
?????out.println("<a class=\"pagination\" href=\"" + contextPath + pagination.getNextPage() + "\" title=\"下一頁\">下一頁</a>");
?????out.println("<a class=\"pagination\" href=\"" + contextPath + pagination.getTotalPage() + "\" title=\"最后一頁\">最后一頁</a>");
????}else{
?????out.println("<span title=\"下一頁\">下一頁</span>");
?????out.println("<span title=\"最后一頁\">最后一頁</span>");
????}
???}
???
???out.println(" ");
???out.println("共有" + pagination.getTotalCount() + "條");
???out.print(" ");
???out.println("每頁" + pagination.getCount() + "條");
???out.print(" ");
???out.println("共" + pagination.getTotalPage() + "頁");
???out.print(" ");
???out.println("本頁是第" + pagination.getCurrPage() + "頁");
???out.println(" ");
???out.println("跳轉到第<input type=\"text\" id=\"" + this.parameter + "\" class=\"input1\" size=\"3\" maxlength=\"5\">頁");
???out.println(" ");
???out.println("<button onclick=\"paginationGoto();\" class=\"buttonbg\">跳轉</button>");
???out.println("<br />");
???/*創建CSS內容*/
???createCSS(out);
???if(this.formName != null && this.formName.length() > 0) {
????/*創建js內容*/
????createJS(out, contextPath, pagination.getTotalPage());
???}else{
????createNoFormJS(out, this.path, pagination.getTotalPage());
???}
???out.println();
??}catch(Exception e){
???throw new JspException(e);
??}
??
??return SKIP_BODY;
?}
?
?/* (non-Javadoc)
? * @see javax.servlet.jsp.tagext.TagSupport#doEndTag()
? */
?public int doEndTag() throws JspException {
??// TODO Auto-generated method stub
??return EVAL_PAGE;
?}
?
?/**
? * 改變URL使它能訪問到action或servlet中去
? * @param href 從頁面傳來的href
? * @param param
? * @param queryStr 查詢內容
? * @return
? * @author?
? */
?private final String encodeURL(String href, String param){
??StringBuffer buffer = new StringBuffer(100);
??
??HttpServletRequest request =
???(HttpServletRequest)this.pageContext.getRequest();
??buffer.append(request.getContextPath() + "/" + href);
??// 判斷是否已經帶有?號
??int question = href.indexOf("?");
??if(question > 0 ){
???buffer.append("&" + param + "=");
??}else{
???buffer.append("?" + param + "=");
??}
??
??return buffer.toString();
?}
?
?/**
? * 創建js內容如果提交form就用js提交
? * @param out
? * @param contextPath
? * @throws Exception
? * @author?
? */
?private final void createJS(JspWriter out, String contextPath, int totalPage) throws Exception {
??out.println("<script language=\"javascript\">");
??out.println("function paginationSubmit(pageNum_) { ");
??out.println("? document." + formName + ".action=\'" + contextPath + "\' + pageNum_ + \'\';");
??out.println("? document." + formName + ".submit();");
??out.println("}");
??/*跳轉內容*/
??HttpServletRequest request =
???(HttpServletRequest)this.pageContext.getRequest();
??String contPath = request.getContextPath() + "/" + this.path;
??out.println("function paginationGoto() { ");
??out.println("? if(!controlNotNull(document.all." + this.parameter + ", '跳轉頁面')) {");
??out.println("??? return;");
??out.println("? }");
??out.println("? ");
??out.println("? if(!controlIsInt(document.all." + this.parameter + ", '跳轉頁面')) {");
??out.println("??? return;");
??out.println("? }");
??out.println("? ");
??out.println("? pageNum_ = document.all." + this.parameter + ".value");
??out.println("? if(pageNum_ > 0 && pageNum_ <= " + totalPage + ") {");
??out.println("??? document." + formName + ".action=\'" + contPath + "&" + this.parameter + "=\' + pageNum_ + \'\';");
??out.println("??? document." + formName + ".submit();");
??out.println("? } else { ");
??out.println("??? alert(\"您輸入的頁數超出范圍\");");
??out.println("? }");
??out.println("}");
??out.println("</script>");
??out.println();
?}
?
?/**
? * 創建沒有form時的js
? * @param out
? * @param contextPath
? * @throws Exception
? * @author?
? */
?private final void createNoFormJS(JspWriter out, String href, int totalPage) throws Exception {
??HttpServletRequest request =
???(HttpServletRequest)this.pageContext.getRequest();
??String contPath = request.getContextPath() + "/" + href;
??out.println("<script language=\"javascript\">");
??out.println("function paginationGoto() { ");
??out.println("? if(!controlNotNull(document.all." + this.parameter + ", '跳轉頁面')) {");
??out.println("??? return;");
??out.println("? }");
??out.println("? ");
??out.println("? if(!controlIsInt(document.all." + this.parameter + ", '跳轉頁面')) {");
??out.println("??? return;");
??out.println("? }");
??out.println("? ");
??out.println("? pageNum_ = document.all." + this.parameter + ".value");
??out.println("? if(pageNum_ > 0 && pageNum_ <= " + totalPage + ") {");
??out.println("??? document.location.href=\'" + contPath + "&" + this.parameter + "=\' + pageNum_ + \'\';");
??out.println("? } else { ");
??out.println("??? alert(\"您輸入的頁數超出范圍\");");
??out.println("? }");
??out.println("}");
??out.println("</script>");
??out.println();
?}
?
?/**
? * 創建css內容
? * @param out
? * @throws Exception
? * @author?
? */
?private final void createCSS(JspWriter out)throws Exception {
??out.println("<style type=\"text/css\">");
??out.println("a.pagination:visited { text-decoration: underline; color: #808080; } ");//#CCCCFF #c0c0c0
??out.println("a.pagination:link { text-decoration: underline; color: blue; } ");
??out.println("a.pagination:hover { text-decoration: none; color: #009933; } ");
??out.println("a.pagination:active { text-decoration: none; color: orangered; } ");
??out.println("</style>");
?}
}
========================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
?"<taglib>
??? <tlib-version>1.0</tlib-version>
?<jsp-version>1.2</jsp-version>
?<short-name>page</short-name>
?<description>
?@author
?pagination page 1-10
?</description>
?<tag>
??<name>pagination</name>
??<tag-class>com.scitel.gdnumcommon.ctag.PaginationTag</tag-class>
??<body-content>empty</body-content>
??<attribute>
???<name>path</name>
???<required>true</required>
???<rtexprvalue>true</rtexprvalue>
??</attribute>
??<attribute>
???<name>name</name>
???<required>false</required>
???<rtexprvalue>true</rtexprvalue>
??</attribute>
??<attribute>
???<name>parameter</name>
???<required>false</required>
???<rtexprvalue>true</rtexprvalue>
??</attribute>
??
??<attribute>
???<name>formName</name>
???<required>false</required>
???<rtexprvalue>true</rtexprvalue>
??</attribute>
?</tag>
</taglib>
=============================
頁面使用代碼
??<Td align="right" colspan="10">
??<page:pagination path="wfProcAction.do?method=queryWorkFlow" name="pagination" parameter="page" formName="form1" />
??</Td>
===============================================
Action 類中使用代碼
???? String page = request.getParameter("page");
???? Pagination pagination = new Pagination();
???? pagination.setTotalCount(didWf.size());
????
???????????????? if (page != null && page.length() > 0) {
????????? pagination.setPage(Integer.parseInt(page));
???? }else {
????????? pagination.setPage(1);
???? }
???????????????? int page_=pagination.getPage();
???????????????? int row_start=(page_*pagination.getCount())-pagination.getCount();
???????????????? int row_end=page_*pagination.getCount();
???????????????? if(row_end>didWf.size()) {
??????????????? ? row_end=didWf.size();
???????????????? }
???????????????? List datalist=didWf.subList(row_start,row_end);
???????????????? request.setAttribute("wkList",datalist);
????????????????
???????????????? request.setAttribute("pagination", pagination);
===============================
posted on 2007-01-08 15:07
有貓相伴的日子 閱讀(1266)
評論(1) 編輯 收藏 所屬分類:
j2ee