iteratetag.java

来自「JavaWeb标签应用开发(随书光盘)为方便读者阅读本书和调试程序」· Java 代码 · 共 65 行

JAVA
65
字号
package csai;
import java.util.Collection;
import java.util.Iterator;

import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.BodyTagSupport;
/**
 * @author dengziyun
 * iterate标签的实现类
 */
public class iterateTag extends BodyTagSupport{
    private String name;//在pageContext中标识的一个属性名
    private Iterator it;//要迭代的对象
    private String type;//it中对象的类型
    Collection collection;
    public void setCollection(Collection collection){
        if(collection.size()>0)
            it=collection.iterator();
    } 
    //----标签开始时调用此方法-------
    public int doStartTag(){
        if(it==null) return SKIP_BODY;
        else return continueNext(it);
    }
    //----标签体执行完后调用此方法----
    public int doAfterBody(){
        return continueNext(it);
    }
    //----标签结束时调用此方法-------
    public int doEndTag(){
        try{
            if(bodyContent!=null)
                bodyContent.writeOut(bodyContent.getEnclosingWriter());
        }catch(Exception e){
            System.out.println(e);
        }
        return EVAL_PAGE;
    }  
    //----迭代----
    protected int continueNext(Iterator it){
        if(it.hasNext()){
            pageContext.setAttribute(name,it.next(),PageContext.PAGE_SCOPE);
            return EVAL_BODY_AGAIN;
        }else return SKIP_BODY;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
	/**
	 * @return Returns the collection.
	 */
	public Collection getCollection() {
		return collection;
	}
}

⌨️ 快捷键说明

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