如果业务逻辑保持相同,我不想在添加标记时更改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方法?
答案 0 :(得分:2)
您正在寻找的是“动态属性”。
请参阅此前一个问题以了解如何操作:
Problem in interpreting dynamic attributes in Jsp
基本上,你添加
<dynamic-attributes>true</dynamic-attributes>
到.tld
描述符,表示可以将任何旧属性传递给标记。然后,您的代码类必须实现DynamicAttributes
interface,并且未声明的属性将作为地图传递到您的代码:
标记声明它接受 动态属性,它必须实现 这个界面。标签的条目 在标记库描述符必须 也可以配置为指示动态 属性被接受。
对于未声明的任何属性 在标记库描述符中 标记,而不是在错误 翻译时间, setDynamicAttribute()方法是 叫,带有名称和价值 属性。这是责任 标记以记住名称和 动态属性的值。