下面是javaeeAPI中对于invoke()方法的介绍:
其中的参数out是一个Writer类的对象,如果写null,就是将标签体内容写到了与此jsp相关联的JspWriter对象,也就是下面的w:
<%
JspWriter w = pageContext.getOut();
%>
这样就可以将标签体的内容输出到浏览器端。
package online.mytag; import java.io.IOException; import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport; public class IpTag extends SimpleTagSupport { @Override
public void doTag() throws JspException, IOException {
getJspBody().invoke(null);
}
}
但是我们可以写一个其他的Writer类实现类的子类,比如StringWriter类
这样我们就可以对于标签体内的内容进行操作了,比如转换大小写:
@Override
public void doTag() throws JspException, IOException {
JspFragment jspBody = getJspBody();
StringWriter sw = new StringWriter();
//这里就能将标签体中的内容写到sw流中,可以自己做一下操作
jspBody.invoke(sw);
//将标签体体中的字母转换为大写
String msg = sw.toString().toUpperCase();
//将转换后的内容输出到jsp页面中
getJspContext().getOut().write(msg); }
这也是获取标签体内容的一种方法。