📄 paginationtag.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(" ");
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 + -