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> ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access