2012-05-15 42 views
2

我創造了一些JSP定製tags.Now我有一個要求如下:與另一個自定義標籤的屬性值JSP定製標記

<bb:custom1 id="id1" attr1="<bb:custom2 attr2='attr2val'></bb:custom2>"></bb:custom1> 

即一個屬性應該是另一個自定義標籤的值將由相應的標籤處理程序解決。我可以看到,這與所有的html標籤一起工作。但是當我嘗試使用我的自定義標籤時,它不起作用。可以請一些人告訴我這是如何實現的。

我正在使用標記處理程序創建自定義標記。

回答

0

你不需要定義自定義EL功能,而不是自定義標籤bb:custom2。比你可以把它叫做:

<bb:custom1 id="id1" attr1="${bb:custom2(attr2val)}"></bb:custom1> 

你可以閱讀有關EL功能here

+0

但是,這是可能的定製tgas還我think.because如果我對任何基本的html標籤都做同樣的事情,即如果我做類似的事情:它可以工作。但是當我這樣做時我的自定義標籤沒有。我認爲這是因爲我在創建標籤時缺少一些東西。 – Ditpi

+0

行..我認爲它只適用於基本的html標記的情況下。在任何自定義標記,它不會工作,我認爲。所以作爲你最好的選擇將EL本身我想。謝謝你的建議。 – Ditpi

1

我通過使用臨時變量解決了這個問題:

<c:set name="val_attr"> 
    <bb:custom2 attr2='attr2val' /> 
</c:set> 

<bb:custom1 id="id1" attr1="${val_attr}"></bb:custom1> 

,它會與任何標記庫工作(例如CUSTOM2可以是從cc:CUSTOM2)。

的另一個好處是,你並不需要知道函數語法(例如,如果需要多個參數,把它順序):

<c:set name="val_attr"> 
    <cc:custom2 param2='myparam2' param1='myparam1' /> 
</c:set> 

<bb:custom1 id="id1" attr1="${val_attr}"></bb:custom1>