📄 iteratetag.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 + -