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.