package com.rlovep.tags;
import java.io.IOException;
import java.io.StringWriter;
import javax.servlet.jsp.JspContext;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.JspFragment;
import javax.servlet.jsp.tagext.SimpleTagSupport;
public class AttributeTags extends SimpleTagSupport{
//声明属性的成员变量
private Integer value;
private String name;
//关键点: 必须提供公开的setter方法,用于给属性赋值
public Integer getValue() {
return value;
}
public void setValue(Integer value) {
this.value = value;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public void doTag() throws JspException, IOException {
JspContext jspContext2 = this.getJspContext();
//将属性输出:
jspContext2.getOut().println();
jspContext2.getOut().write("\n"+name+"="+value);
//得到标签体内容
JspFragment jspBody = getJspBody();
//显示标签体的两种方法
//方法1直接调用
//jspBody.invoke(null);
//方法2通过输出到out
//jspBody.invoke(jspContext2.getOut());
//修改标签体内容并且重复输出:
StringWriter sw=new StringWriter();
jspBody.invoke(sw);
String s=sw.toString().toUpperCase();
for(int i=0;i<5;i++)
{
//注意此去不能在调用jspBody.invoke();
jspContext2.getOut().write(s);
}
}
}