我想定义一个jsp标记,它可以接受一些未在.tld文件中声明的额外属性。有可能吗?
我想要这个,因为我想定义一个<cms:img>
标记,它会生成一个html img
标记。用户可以传递一些属性,但我不想限制用户,我希望他们可以像普通的html img标签一样使用它。
例如,用户可以使用此标记并传递一些必需的信息:
<cms:img id="111" />
将生成html img标记为:
<img src="/show_images?id=111" />
我需要的只是id
属性。
但是用户可能会将其视为普通的html img标记,并将一些额外的属性传递给它,例如:
<cms:img id="111" width="100px" height="100px" style="..." more attributes .. />
我不想在我的标签中声明其他属性,因为有太多,用户可能有自己的自定义属性。
所以我想知道:我可以在jsp标记中声明id
属性,但让它接受所有其他未声明的属性吗?
答案 0 :(得分:2)
是的,这是可能的。这些被称为动态属性。见http://docs.oracle.com/javaee/1.4/tutorial/doc/JSPTags5.html#wp89775:
动态属性(可选)
指示此标记是否支持 动态名称的其他属性。该值标识a scoped属性,用于放置包含名称和的Map 在调用标记期间传递的动态属性的值。 如果动态属性的值为,则会产生转换错误 标签指令等于给定变量的名称值 指令或属性指令的name属性的值。