下面是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); }
這也是獲取標簽體內容的一種方法。