📄 pagetag.java
字号:
package com.laoer.bbscs.web.taglib;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
import org.apache.commons.lang.*;
import org.apache.struts.taglib.*;
import com.laoer.bbscs.service.web.*;
/**
* <p>Title: Tianyi BBS</p>
*
* <p>Description: BBSCS</p>
*
* <p>Copyright: Copyright (c) 2006</p>
*
* <p>Company: Laoer.com</p>
*
* @author Gong Tianyi
* @version 7.0
*/
public class PageTag
extends TagSupport {
protected String name = "";
protected String styleClass = "";
protected String property = null;
protected String scope = null;
protected String argPage = "page";
protected String argTotal = "total";
protected int pageSep = 10;
protected String javaScript = "";
public PageTag() {
}
public int doStartTag() throws JspException {
return (SKIP_BODY);
}
public int doEndTag() throws JspException {
Pages pages;
Object value = TagUtils.getInstance().lookup(pageContext, name, property, scope);
if (value == null) {
return (SKIP_BODY);
}
pages = (Pages) value;
//一行显示页数
int pagesep = this.pageSep;
//总行数
int allpagesep = (int) Math.ceil( (pages.getAllPage() + pagesep - 1) / pagesep);
//当前行数
int cpagesep = (int) Math.ceil( (pages.getCpage() + pagesep - 1) / pagesep);
//当前一行显示页数
int cnum;
if (pages.getAllPage() > 0) {
//在页中
if (cpagesep != allpagesep) {
cnum = pagesep;
}
//页末
else {
cnum = pages.getAllPage() % pagesep;
//正好整除
if (cnum == 0) {
cnum = pagesep;
}
}
}
else {
cnum = 0;
}
//System.out.println("cpage:" + pages.getCpage() + " cpagesep:" + cpagesep + " allpagesep:" + allpagesep);
String fileName = pages.getFileName();
StringBuffer sb = new StringBuffer();
if (pages.isUseUrlRewrite()) { //使用URL Rewrite
if (StringUtils.isBlank(this.javaScript)) {
sb.append("<span");
if (StringUtils.isNotBlank(this.styleClass)) {
sb.append(" class=\"");
sb.append(this.styleClass);
sb.append("\"");
}
sb.append(">");
if (cpagesep > 1) {
String tmpFileName = fileName;
tmpFileName = this.replacePage(tmpFileName, 1);
tmpFileName = this.replaceTotal(tmpFileName, pages.getTotalNum());
sb.append("<a href=\"");
sb.append(tmpFileName);
sb.append("\">");
//sb.append("|<");
sb.append("«");
sb.append("</a>");
tmpFileName = fileName;
//往前一行
int previous;
if (pages.getCpage() <= 1) {
previous = 1;
}
else {
previous = pages.getCpage() - 1;
}
tmpFileName = this.replacePage(tmpFileName, previous);
tmpFileName = this.replaceTotal(tmpFileName, pages.getTotalNum());
sb.append(" <a href=\"");
sb.append(tmpFileName);
sb.append("\">");
//sb.append("<");
sb.append("‹");
sb.append("</a>");
}
for (int i = 0; i < cnum; i++) {
String tmpFileName = fileName;
tmpFileName = this.replacePage(tmpFileName, ( (i + 1) + ( (cpagesep - 1) * pagesep)));
tmpFileName = this.replaceTotal(tmpFileName, pages.getTotalNum());
sb.append(" <a href=\"");
sb.append(tmpFileName);
sb.append("\">");
if (pages.getCpage() == (i + 1) + ( (cpagesep - 1) * pagesep)) {
sb.append("<strong>");
sb.append( (i + 1) + ( (cpagesep - 1) * pagesep));
sb.append("</strong>");
}
else {
sb.append( ( (i + 1) + ( (cpagesep - 1) * pagesep)));
}
sb.append("</a>");
}
if (cpagesep < allpagesep) {
String tmpFileName = fileName;
int next;
if (pages.getCpage() >= pages.getAllPage()) {
next = (int) pages.getAllPage();
}
else {
next = pages.getCpage() + 1;
}
tmpFileName = this.replacePage(tmpFileName, next);
tmpFileName = this.replaceTotal(tmpFileName, pages.getTotalNum());
sb.append(" <a href=\"");
sb.append(tmpFileName);
sb.append("\">");
sb.append("›");
sb.append("</a> ");
tmpFileName = fileName;
tmpFileName = this.replacePage(tmpFileName, pages.getAllPage());
tmpFileName = this.replaceTotal(tmpFileName, pages.getTotalNum());
sb.append(" <a href=\"");
sb.append(tmpFileName);
sb.append("\">");
//sb.append(">|");
sb.append("»");
sb.append("</a>");
}
sb.append("</span>");
}
else {
sb.append("<span");
if (StringUtils.isNotBlank(this.styleClass)) {
sb.append(" class=\"");
sb.append(this.styleClass);
sb.append("\"");
}
sb.append(">");
if (cpagesep > 1) {
String tmpFileName = fileName;
tmpFileName = this.replacePage(tmpFileName, 1);
tmpFileName = this.replaceTotal(tmpFileName, pages.getTotalNum());
sb.append("<a href=\"javascript:;\" onclick=\"");
sb.append(this.javaScript);
sb.append("('");
sb.append(tmpFileName);
sb.append("');\">");
//sb.append("\">");
//sb.append("|<");
sb.append("«");
sb.append("</a>");
tmpFileName = fileName;
//往前一行
int previous;
if (pages.getCpage() <= 1) {
previous = 1;
}
else {
previous = pages.getCpage() - 1;
}
tmpFileName = this.replacePage(tmpFileName, previous);
tmpFileName = this.replaceTotal(tmpFileName, pages.getTotalNum());
//sb.append(" <a href=\"");
//sb.append(tmpFileName);
//sb.append("\">");
//sb.append("<");
sb.append("<a href=\"javascript:;\" onclick=\"");
sb.append(this.javaScript);
sb.append("('");
sb.append(tmpFileName);
sb.append("');\">");
sb.append("‹");
sb.append("</a>");
}
for (int i = 0; i < cnum; i++) {
String tmpFileName = fileName;
tmpFileName = this.replacePage(tmpFileName, ( (i + 1) + ( (cpagesep - 1) * pagesep)));
tmpFileName = this.replaceTotal(tmpFileName, pages.getTotalNum());
//sb.append(" <a href=\"");
//sb.append(tmpFileName);
//sb.append("\">");
sb.append("<a href=\"javascript:;\" onclick=\"");
sb.append(this.javaScript);
sb.append("('");
sb.append(tmpFileName);
sb.append("');\">");
if (pages.getCpage() == (i + 1) + ( (cpagesep - 1) * pagesep)) {
sb.append("<strong>");
sb.append( (i + 1) + ( (cpagesep - 1) * pagesep));
sb.append("</strong>");
}
else {
sb.append( ( (i + 1) + ( (cpagesep - 1) * pagesep)));
}
sb.append("</a>");
}
if (cpagesep < allpagesep) {
String tmpFileName = fileName;
int next;
if (pages.getCpage() >= pages.getAllPage()) {
next = (int) pages.getAllPage();
}
else {
next = pages.getCpage() + 1;
}
tmpFileName = this.replacePage(tmpFileName, next);
tmpFileName = this.replaceTotal(tmpFileName, pages.getTotalNum());
//sb.append(" <a href=\"");
//sb.append(tmpFileName);
//sb.append("\">");
sb.append("<a href=\"javascript:;\" onclick=\"");
sb.append(this.javaScript);
sb.append("('");
sb.append(tmpFileName);
sb.append("');\">");
sb.append("›");
sb.append("</a> ");
tmpFileName = fileName;
tmpFileName = this.replacePage(tmpFileName, pages.getAllPage());
tmpFileName = this.replaceTotal(tmpFileName, pages.getTotalNum());
//sb.append(" <a href=\"");
//sb.append(tmpFileName);
//sb.append("\">");
sb.append("<a href=\"javascript:;\" onclick=\"");
sb.append(this.javaScript);
sb.append("('");
sb.append(tmpFileName);
sb.append("');\">");
//sb.append(">|");
sb.append("»");
sb.append("</a>");
}
sb.append("</span>");
}
}
else { //不使用URL Rewrite
if (fileName.indexOf("?") == -1) {
fileName = fileName + "?";
}
else {
if (!fileName.endsWith("&")) {
fileName = fileName + "&";
}
}
if (StringUtils.isBlank(this.javaScript)) {
/**
* previous butten ,append to
* <a href='xxx.lt?page=x&t=x'><img></a>
*/
sb.append("<span");
if (StringUtils.isNotBlank(this.styleClass)) {
sb.append(" class=\"");
sb.append(this.styleClass);
sb.append("\"");
}
sb.append(">");
if (cpagesep > 1) {
sb.append("<a href=\"");
sb.append(fileName);
sb.append(this.getArgPage());
sb.append("=1&");
sb.append(this.argTotal);
sb.append("=");
sb.append(pages.getTotalNum());
sb.append("\">");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -