首頁常見問題正文

自定義標(biāo)簽之JspFragment類

更新時(shí)間:2024-01-15 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  javax.servlet.jsp.tagext.JspFragment類是在JSP2.0中定義的,它的實(shí)例對象代表JSP頁面中的一段JSP片段,但是這段JSP片段中不能包含JSP腳本元素。

  JSP容器在處理簡單標(biāo)簽的標(biāo)簽體時(shí),會(huì)把標(biāo)簽體內(nèi)容用一個(gè)JspFragment對象表示,并調(diào)用標(biāo)簽處理器對象的setJspBody()方法將JspFragment對象傳遞給標(biāo)簽處理器對象,標(biāo)簽開發(fā)者可以根據(jù)需要調(diào)用JspFragment對象的方法來決定是否輸出標(biāo)簽體、或者循環(huán)多次輸出標(biāo)簽體等。在JspFragment類中定義了兩個(gè)方法,方法的說明如表9-5所示。

  表9-5 JspFragment類的方法

1705286970526_JspFragment類的方法.jpg

  在表9-5中,JspFragment的invoke()方法是簡單標(biāo)簽開發(fā)中最重要的一個(gè)方法,它用于控制如何執(zhí)行標(biāo)簽體的內(nèi)容。如果在doTag()方法中調(diào)用一次invoke()方法,就會(huì)執(zhí)行一次標(biāo)簽體,多次調(diào)用invoke()方法就會(huì)多次執(zhí)行標(biāo)簽體。與BodyContent對象不同的是,在JspFragment中沒有提供容器緩存標(biāo)簽體的內(nèi)容。與BodyContent對象不同的是,在JspFragment中沒有提供容器緩存標(biāo)簽體的內(nèi)容,也沒有定義getString()之類的方法取出標(biāo)簽體內(nèi)容,如果想對標(biāo)簽體內(nèi)容進(jìn)行修改,只需在調(diào)用invoke()方法時(shí)傳入一個(gè)可取出結(jié)果數(shù)據(jù)的輸出流對象,例如StringWriter、CharArrayWriter,讓標(biāo)簽體的執(zhí)行結(jié)果輸出到該輸出流對象中,然后取出數(shù)據(jù)進(jìn)行修改后再輸出到瀏覽器即可。

  本文版權(quán)歸黑馬程序員Java培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明作者出處。謝謝!

  作者:黑馬程序員Java培訓(xùn)學(xué)院

  首發(fā):https://java.itheima.com

分享到:
在線咨詢 我要報(bào)名
和我們在線交談!