是否可以在jsp标记库中创建自定义属性而无需定义setter方法?

时间:2010-03-09 14:26:40

标签: java jsp

如果业务逻辑保持相同,我不想在添加标记时更改java代码。我可以使用Enumeration属性集(request.getAttributeNames())来访问它。

e.g。

<car:built
 maker="ford" wheel="four" name="endeavor" engine="dohc" power="72bhp"
 tyre="4" interior="mobile-charger,cigratte-lighter, music player"
 />

我不想用逗号分隔内部,而是按照以下方式添加:

<car:built maker="ford" wheel="four" name="endeavor" engine="dohc" power="72bhp"
tyre="4" interior-mobile-charger="true" interior-cigratte-lighter="true" 
interior-music-player-maker="JVC"  interior-music player-bass="true"/>

这样,我可以迭代并检查属性名称是否包含“内部”单词并存储在地图中并将其发送到报告中。它还可以帮助我定义新属性而无需更改java代码。

有没有办法在jsp标签库中创建自定义属性而无需定义setter方法?

1 个答案:

答案 0 :(得分:2)

您正在寻找的是“动态属性”。

请参阅此前一个问题以了解如何操作:

Problem in interpreting dynamic attributes in Jsp

基本上,你添加

<dynamic-attributes>true</dynamic-attributes>

.tld描述符,表示可以将任何旧属性传递给标记。然后,您的代码类必须实现DynamicAttributes interface,并且未声明的属性将作为地图传递到您的代码:

  

标记声明它接受   动态属性,它必须实现   这个界面。标签的条目   在标记库描述符必须   也可以配置为指示动态   属性被接受。

     

对于未声明的任何属性   在标记库描述符中   标记,而不是在错误   翻译时间,   setDynamicAttribute()方法是   叫,带有名称和价值   属性。这是责任   标记以记住名称和   动态属性的值。