对于自定义标签类中JspBody类的invoke方法的理解


下面是javaeeAPI中对于invoke()方法的介绍:

1

其中的参数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类

2

这样我们就可以对于标签体内的内容进行操作了,比如转换大小写:

@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);
        
    }

这也是获取标签体内容的一种方法。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM