simplepagertag.java

来自「一个免费wap站」· Java 代码 · 共 163 行

JAVA
163
字号
package com.eline.wap.catalog.taglib.wml;

import java.io.IOException;
import java.util.StringTokenizer;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

import com.eline.wap.common.util.AppLogger;

public class SimplePagerTag extends TagSupport {

	/**
	 * 
	 */
	private static final long serialVersionUID = -8339704359368912660L;

    private String action = null;
    private SimpleTag simpleTag = null;
    private String method = "post";

    public int doStartTag() throws JspException {
        // check if inside simple tag
    	simpleTag = (SimpleTag) findAncestorWithClass(this, SimpleTag.class);
        if (simpleTag == null) {
            throw new JspTagException("SimplePagerTag: pagerForm tag not inside simple" + "tag");
        }
        // print out <form> tag and hidden input for pageIndex
        try {
            JspWriter out = pageContext.getOut();

            renderPageStatus(out);
            renderNext(out);
            renderPrevious(out);
            
        } catch (IOException e) {
        	AppLogger.error("SimplePagerTag.doStartTag(): 形成翻页标记SimplePagerTag失败!");
        }

        return EVAL_BODY_INCLUDE;
	}

	public void setAction(String action) {
		this.action = action;
	}

	public void setMethod(String method) {
		this.method = method;
	}

	/**
	 * 
	 * @param out
	 */
	private void renderPageStatus(JspWriter out) throws IOException {
		out.println("页数:" + (simpleTag.getPageIndex() + 1) + "/" + simpleTag.getTotalPages() + "<br/>");
	}

	/**
	 * 
	 * @param out
	 * @throws IOException
	 */
	private void renderPrevious(JspWriter out) throws IOException {
		if (!simpleTag.hasPrevious())
			return;

		//求出所要转到的网页
        StringTokenizer actionToken = new StringTokenizer(action, "?");
        if (actionToken.countTokens() < 1)
            throw new IOException("Invalid action URL!");

        String linkURL = actionToken.nextToken();
        String paramsList = "";
        if (actionToken.countTokens() > 0)
        	paramsList = actionToken.nextToken();

        //求出页面中传过来的参数串
        StringTokenizer paramsToken = new StringTokenizer(paramsList, "&");
        String itemStr = null, param = null, value = null;
        StringTokenizer itemToken = null;

        //形成参数传递页面内容
        out.print("<anchor>上页");
        // out.print("<go href=\"" + linkURL + "\">");
		out.print("<go href=\"" + linkURL + "\" method=\"" + this.method + "\">");

        // 页面相关参数
        out.print("<postfield name=\"" + simpleTag.prefix + "pageIndex\" value=\"" + (simpleTag.getPageIndex() - 1) + "\" />");
        out.print("<postfield name=\"" + simpleTag.prefix + "prev\" value=\"true\" />");

        // 原始参数
        while (paramsToken.hasMoreTokens()) {
            itemStr = paramsToken.nextToken();
            itemToken = new StringTokenizer(itemStr, "=");
            if (itemToken.countTokens() > 1) {
                param = itemToken.nextToken();
                if (param.indexOf("amp;") >= 0)
                    param = param.substring(4);

                value = itemToken.nextToken();
                out.print("<postfield name=\"" + param + "\" value=\"" + value + "\" />");
            }
        }
		out.print("</go>");
		out.println("</anchor><br/>");
	}

	/**
	 * 
	 * @param out
	 * @throws IOException
	 */
	private void renderNext(JspWriter out) throws IOException {
		System.out.println("simpleTag.hasNext()=" + simpleTag.hasNext());

		if (!simpleTag.hasNext())
			return;

        //求出所要转到的网页
        StringTokenizer actionToken = new StringTokenizer(action, "?");
        if (actionToken.countTokens() < 1)
            throw new IOException("Invalid action URL!");

        String linkURL = actionToken.nextToken();
        String paramsList = "";
        if (actionToken.countTokens() > 0)
        	paramsList = actionToken.nextToken();

        //求出页面中传过来的参数串
        StringTokenizer paramsToken = new StringTokenizer(paramsList, "&");
        String itemStr = null, param = null, value = null;
        StringTokenizer itemToken = null;

        //形成参数传递页面内容
        out.print("<anchor>下页");
        // out.print("<go href=\"" + linkURL + "\">");
		out.print("<go href=\"" + linkURL + "\" method=\"" + this.method + "\">");

        // 页面相关参数
        out.print("<postfield name=\"" + simpleTag.prefix + "pageIndex\" value=\"" + (simpleTag.getPageIndex() + 1) + "\" />");
        out.print("<postfield name=\"" + simpleTag.prefix + "next\" value=\"true\" />");

        // 原始参数
        while (paramsToken.hasMoreTokens()) {
            itemStr = paramsToken.nextToken();
            itemToken = new StringTokenizer(itemStr, "=");
            if (itemToken.countTokens() > 1) {
                param = itemToken.nextToken();
                if (param.indexOf("amp;") >= 0)
                    param = param.substring(4);

                value = itemToken.nextToken();
                out.print("<postfield name=\"" + param + "\" value=\"" + value + "\" />");
            }
        }
		out.print("</go>");
		out.println("</anchor><br/>");
	}
}

⌨️ 快捷键说明

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