帶標籤體的標籤和父標籤的標籤

2021-09-01 23:56:38 字數 1731 閱讀 1171

帶有標籤體的自定義標籤

1)若有乙個標籤體:

<

c1:date

>

sssss

c1:date

>

在自定義標籤的標籤處理器中使用jspfragment物件封裝了標籤體的資訊

若配置了標籤含有標籤體,則jsp會呼叫setjspbody()方法把jspfragment傳遞給標籤處理類。在******tagsupport中還定義了乙個getjspbody()方法用於返回jspfragment物件。

2.jspfragment的invoke(writer)方法:把標籤體內容從writer中輸出,若為null,則等同於invole(getjspcontext.getout()),即直接把標籤體內容直接輸出到頁面上

publicvoid

dotag()throws

jspexception, ioexception 

在tld檔案中,使用指定標籤體的型別:

大部分情況下取值為tagdependent:

>empty:沒有標籤體

>scriptless:不能有jsp指令碼元素,但是可以有el表示式和jsp動作元素

>tagdependent:表示標籤體交由標籤體本身去解析處理,若指定為tagdependent,在標籤體中的所有**都會原封不懂的交給標籤處理器。而不是將執行結果傳給標籤處理器

開發父標籤的標籤

1)父標籤無法獲取子標籤的引用。父標籤僅把子標籤作為標籤體來使用

2)子標籤可以通過getparent()方法來獲取父標籤的引用(需繼承******tagsupport或自實現******tag介面中的該方法)若子標籤的確有父標籤,jsp引擎會把父標籤的引用通過setparent(jsptag parent)付給標籤處理器

3)注意父標籤的型別時jsptag型別,該介面是乙個空介面,但是來統一******tag和tag的,實際使用需要進行強制轉換為父標籤的處理器類

在tld檔案中,無需為父標籤有額外的配置,但,子標籤是是以標籤體的形式存在的。所有父標籤的

<

body-content

>

scriptless

body-content

>

需要設定為

scriptless

;下列是具體的**

*****************父標籤的處理器類**************

publicclass

fathertagextends

******tagsupport 

publicvoid

setname(string 

name) 

public

string getname()  }

************************子標籤的實現*********************

publicclass

sontagextends

******tagsupport  }

帶標籤體標籤

iterator lee.iteratortag scriptless collection true true item true true public class iteratortag extends tagsupport public string getcollection item屬性...

帶父標籤的自定義標籤

開發有父標籤的標籤 1.父標籤無法獲取子標籤的引用,父標籤僅把子標籤作為標籤體來使用.2.子標籤可以通過 getparent 方法來獲取父標籤的引用 需繼承 tagsupport 或自實現 tag 介面的該方法 若子標籤的確有父標籤,jsp 引擎會把代表父標籤的引用通過 setparent jspt...

JSP自定義標籤 帶標籤體(body)的標籤

開發帶標籤體的標籤,可實現bodytag介面,也可從bodytag介面的實現類bodytagsupport繼承,為簡化開發,推薦從bodytagsupport類繼承開發。編寫標籤對應的實現類時,需要過載bodytagsupport類幾個方法 dostarttag setbodycontent doi...