對於自定義標簽類中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