Supporting Undeclared Attributes
Say you need to generate an HTML table with product information in a
number of pages. The information to be shown for each product is
subject to change, so you decide to create a custom action that does
all the dirty work, allowing you to make the changes in one place
when needed. However, the HTML <table>
element supports a number of attributes affecting the
table’s look; there are 23 different attributes in
HTML 4.0.1, to be exact.
You could define all 23 attributes for the custom action, in addition to the specific ones needed for the custom action’s core functionality, but then you would constantly have to add new attributes as they are added to new versions of the HTML specification. A better approach is to tell the container that the custom action supports dynamic attributes (a more accurate name would have been “undeclared attributes”). The dynamic attributes support is a new feature added in JSP 2.0. When a custom action is marked as supporting dynamic attributes, the page author can use attributes that are not explicitly declared for the tag handler in the custom action element, without the container flagging them as errors.
You tell the container that the tag handler can handle dynamic attributes by adding a declaration in the TLD:
.. ... <tag> <name>prodTable</name> <tag-class>com.ora.jsp.tags.xmp.ProdTableTag</tag-class> <body-content>empty</body-content> <attribute> <name>prods</name> <required>true</required> <rtexprvalue>true</rtexprvalue> ...
Get JavaServer Pages, 3rd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.