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

📄 iteratetag.java

📁 孙鑫的Java Web开发详解一书的源代码
💻 JAVA
字号:
package org.sunxin.lesson.jsp.ch15;

import java.io.IOException;
import java.util.Collection;
import java.util.Iterator;

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

public class IterateTag extends TagSupport
{
    
    private Iterator items;
    private String itemId;
    private Object item;
    
    public IterateTag()
    {
        items=null;
    }
    
    public void release()
    {
        items=null;
    }
    
    /**
    * 得到集合的迭代对象。
    */
    public void setItems(Collection cl)
    {
        if(cl.size()>0)
            items=cl.iterator();
    }
    
    /**
    * var作为<iterate>标记的属性。
    */
    public void setVar(String var)
    {
        itemId=var;
    }
    
    /**
    * 由于在标签体中,要使用集合中的元素,而此时doAfterBody()方法还没有被调用,
    * 所以必须在doStartTag()方法中先取出一个元素,并调用putVariable()方法,
    * 将该元素保存到pageContext对象中。
    */
    public int doStartTag() throws JspException
    {        if(items.hasNext())
        {
            item=items.next();
        }
        else
        {
            return SKIP_BODY;
        }
        putVariable();        return EVAL_BODY_INCLUDE;    }
    
    public int doAfterBody() throws JspException
    {
        if(items.hasNext())
        {
            item=items.next();
        }
        else
        {
            return SKIP_BODY;
        }
        putVariable();
        return EVAL_BODY_AGAIN;
    }
    
    /**
    * 将从集合中取出的元素保存到pageContext对象中。
    */
    public void putVariable()
    {
        if(null==item)
            pageContext.removeAttribute(itemId,PageContext.PAGE_SCOPE);
        else
            pageContext.setAttribute(itemId,item);
        
    }
}

⌨️ 快捷键说明

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