⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 paginationtag.java

📁 羽量级数据持久层开发框架
💻 JAVA
字号:
package org.speedframework.tag;

import org.speedframework.entity.Pagination;

import java.io.IOException;

import javax.servlet.http.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

public class PaginationTag extends TagSupport {

	private static final long serialVersionUID = 1673491971683216709L;

	private String formName = null;

	private String name = null;

	private String parameter = null;

	private String path = null;

	private String contextPath;

	private Pagination pagination;

	private void setPagination() {
		this.pagination = (Pagination) pageContext.getRequest().getAttribute(
				name);
	}

	public void setName(String name) {
		this.name = name;
	}

	public void setPath(String path) {
		this.path = path;
	}

	public void setParameter(String parameter) {
		this.parameter = parameter;
	}

	public void setFormName(String formName) {
		this.formName = formName;
	}

	public int doStartTag() throws JspException {
		if (this.name == null) {
			this.name = "pagination";
		}

		if (parameter == null) {
			parameter = "page";
		}

		if (path == null) {
			throw new NullPointerException("path is null");
		}

		this.setPagination();

		if (pagination == null) {
			throw new NullPointerException(name + "is null in request");
		}

		try {
			JspWriter out = pageContext.getOut();

			this.setContextPath();

			if ((this.formName != null) && (this.formName.length() > 0)) {
				hasForm(out);
			} else {
				notForm(out);
			}

			out.println(" ");
			out.println("Total " + pagination.getTotalCount() + "");
			out.print(" ");
			out.println("Page " + pagination.getCount() + "");
			out.print(" ");
			out.println("Page " + pagination.getTotalPage() + " of ");
			out.print(" ");
			out.println("" + pagination.getCurrPage() + "");
			out.println(" ");
			out.println("Go to<input type=\"text\" id=\"" + this.parameter
					+ "\" class=\"textF\" size=\"3\" maxlength=\"5\">");
			out.println("&nbsp;");
			out
					.println("<button onclick=\"paginationGoto();\" style=\"border:1px ridge #d6edef;background-color:#ffffff\">Go</button>");
			out.println("<br />");


			createCSS(out);

			if ((this.formName != null) && (this.formName.length() > 0)) {
				createJS(out, pagination.getTotalPage());
			} else {
				createNoFormJS(out, pagination.getTotalPage());
			}

			out.println();
		} catch (Exception e) {
			throw new JspException(e);
		}

		return SKIP_BODY;
	}

	private void notForm(JspWriter out) throws IOException {
		if (pagination.isHasPreviousPage()) {
			out.println("<a class=\"pagination\" href=\"" + this.contextPath
					+ "1\" title=\"First\">First</a>");
			out.println("<a class=\"pagination\" href=\"" + this.contextPath
					+ pagination.getPreviousPage()
					+ "\" title=\"Previous\">Previous</a>");
		} else {
			out.println("<span title=\"First\">First</span>");
			out.println("<span title=\"Previous\">Previous</span>");
		}

		if (pagination.isHasNextPage()) {
			out.println("<a class=\"pagination\" href=\"" + this.contextPath
					+ pagination.getNextPage() + "\" title=\"Next\">Next</a>");
			out.println("<a class=\"pagination\" href=\"" + this.contextPath
					+ pagination.getTotalPage() + "\" title=\"Last\">Last</a>");
		} else {
			out.println("<span title=\"Next\">Next</span>");
			out.println("<span title=\"Last\">Last</span>");
		}
	}

	private void hasForm(JspWriter out) throws IOException {
		if (pagination.isHasPreviousPage()) {
			out
					.println("<a class=\"pagination\" href=\""
							+ this.contextPath
							+ "1\" onclick=\"paginationSubmit('1');return false;\" title=\"First\">First</a>");
			out.println("<a class=\"pagination\" href=\"" + this.contextPath
					+ pagination.getPreviousPage()
					+ "\" onclick=\"paginationSubmit('"
					+ pagination.getPreviousPage()
					+ "');return false;\" title=\"Previous\">Previous</a>");
		} else {
			out.println("<span title=\"First\">First</span>");
			out.println("<span title=\"Previous\">Previous</span>");
		}

		if (pagination.isHasNextPage()) {
			out.println("<a class=\"pagination\" href=\"" + this.contextPath
					+ pagination.getNextPage()
					+ "\" onclick=\"paginationSubmit('"
					+ pagination.getNextPage()
					+ "');return false;\"  title=\"Next\">Next</a>");
			out.println("<a class=\"pagination\" href=\"" + this.contextPath
					+ pagination.getTotalPage()
					+ "\" onclick=\"paginationSubmit('"
					+ pagination.getTotalPage()
					+ "');return false;\" title=\"Last\">Last</a>");
		} else {
			out.println("<span title=\"Next\">Next</span>");
			out.println("<span title=\"Last\">Last</span>");
		}
	}

	public int doEndTag() throws JspException {

		return EVAL_PAGE;
	}

	private final void createJS(JspWriter out, int totalPage) throws Exception {
		out.println("<script language=\"javascript\">");
		out.println("function paginationSubmit(pageNum_) { ");
		out.println("  document." + formName + ".action=\'" + this.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();
	}

	private final void createNoFormJS(JspWriter out, int totalPage)
			throws Exception {
		HttpServletRequest request = (HttpServletRequest) this.pageContext
				.getRequest();
		String contPath = request.getContextPath() + "/" + this.contextPath;

		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("function _validateNotNull(strObj) {");
		out.println("   strObj = strObj.replace(/(^\\s*)|(\\s*$)/g, \"\");");
		out.println("   if(strObj.length > 0){");
		out.println("   return true;");
		out.println("   }else{");
		out.println("   return false;");
		out.println("   }");
		out.println("}");
		out.println("function _validateIsInt(strObj) {");
		out.println("   if(!_validateNotNull(strObj)){");
		out.println("           return true;");
		out.println("   }");
		out.println("   reg = /^[1-9][0-9]{0,}$/;");
		out.println("   return reg.test(strObj);");
		out.println("}");
		out.println("function _controlNotNull(control, controlShowName){");
		out.println("   if(control.type == \"select-one\") {");
		out.println("           alert(\"?????\" + controlShowName + \"!\");");
		out.println("           control.focus();");
		out.println("           return false;");
		out.println("           }");
		out.println("   }else{");
		out
				.println("   control.value = control.value.replace(/(^\\s*)|(\\s*$)/g, \"\");");
		out.println("           if(!_validateNotNull(control.value)) {");
		out
				.println("                   alert(controlShowName + \"???????!\");");
		out.println("                   if(control.type != \"hidden\") {");
		out.println("                           control.focus();");
		out.println("                           }");
		out.println("                           return false;");
		out.println("           }");
		out.println("   }");
		out.println("   return true;");
		out.println("}");
		out.println("function _controlIsInt(control, controlShowName) {");
		out
				.println("   control.value = control.value.replace(/(^\\s*)|(\\s*$)/g, \"\");");
		out.println("   if(!_validateIsInt(control.value)) {");
		out.println("   alert(controlShowName + \"???????????!\");");
		out.println("   if(control.type != \"hidden\") {");
		out.println("           control.focus();");
		out.println("           }");
		out.println("   return false;");
		out.println("   }");
		out.println("   return true;");
		out.println("}");
		out.println("</script>");
		out.println();
	}

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

	private void setContextPath() {
		StringBuffer buffer = new StringBuffer(100);
		HttpServletRequest request = (HttpServletRequest) this.pageContext
				.getRequest();

		buffer.append(request.getContextPath() + "/" + this.path);

		int question = this.path.indexOf("?");

		if (question > 0) {
			buffer.append("&" + this.parameter + "=");
		} else {
			buffer.append("?" + this.parameter + "=");
		}

		this.contextPath = buffer.toString();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -