2012-05-15 46 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>