首頁常見問題正文

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

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

IT培訓(xùn)班

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

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

  表9-5 JspFragment類的方法

1705286970526_JspFragment類的方法.jpg

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

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

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

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

分享到:
在線咨詢 我要報名
和我們在線交談!