【问题标题】:Is it possible to create custom attribute in jsp tag library without defining setter method?是否可以在不定义 setter 方法的情况下在 jsp 标签库中创建自定义属性?
【发布时间】:2010-03-09 14:26:40
【问题描述】:

如果业务逻辑保持不变,我不想在添加标签时更改 java 代码。我可以通过使用枚举属性集(request.getAttributeNames()) 来访问它。

例如

<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方法?

【问题讨论】:

    标签: java jsp


    【解决方案1】:

    您要查找的内容称为“动态属性”。

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

    Problem in interpreting dynamic attributes in Jsp

    本质上,你添加

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

    .tld 描述符,表示可以将任何旧属性传递给标记。然后你的标签类必须实现DynamicAttributes interface,未声明的属性将作为映射传递给你的标签:

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

    对于任何未声明的属性 在标签库描述符中为此 标签,而不是在 翻译时间 setDynamicAttribute() 方法是 调用,带有名称和值 属性。这是责任 记住名字的标签和 动态属性的值。

    【讨论】:

    • @skaffman:这是我的愚蠢。我必须详细阅读文档。谢谢 skaffman,它有效。
    猜你喜欢
    • 2010-09-18
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-21
    • 1970-01-01
    相关资源
    最近更新 更多