You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jspwiki.apache.org by aj...@apache.org on 2008/02/23 07:48:13 UTC

svn commit: r630398 [2/3] - in /incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/etc: StripesResources.properties commons-logging.properties jspwiki.properties.tmpl jstl-fmt.tld stripes.tld web.xml

Added: incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/etc/stripes.tld
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/etc/stripes.tld?rev=630398&view=auto
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/etc/stripes.tld (added)
+++ incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/etc/stripes.tld Fri Feb 22 22:48:11 2008
@@ -0,0 +1,1950 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Copyright 2005-2006 Tim Fennell
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+-->
+
+<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
+        http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
+        version="2.0">
+
+    <description>
+        Provides tags for use with the Stripes presentation framework.  There are three main
+        groups of tags in this tag library.  First come the HTML form tags.  These include
+        the form tag itself as well as tags for most of the input tag variants.  The second
+        is a set of tags for output error information, including 'errors', 'individual-error'
+        and others.  Last is a set of utility tags.  These include the wizard-fields tag which
+        can write out hidden fields for values in the request, the useActionBean tag to use
+        ActionBeans as view helpers and the link tags for generating links similar to forms.
+    </description>
+    <display-name>Stripes Tag Library</display-name>
+    <tlib-version>1.0</tlib-version>
+    <short-name>stripes</short-name>
+    <uri>http://stripes.sourceforge.net/stripes.tld</uri>
+
+    <tag>
+        <description><![CDATA[
+            <p>Tag that generates HTML form fields of type
+            &lt;input type=&quot;button&quot; ... /&gt; which render buttons for submitting forms.
+            The only capability offered above and beyond a pure html tag is the ability to lookup
+            the value of the button (i.e. the text on the button that the user sees) from a
+            localized resource bundle.</p>
+
+            <p>The tag will set it's value using the first non-null result from the following list:</p>
+            <ul>
+              <li>formName.buttonName from the localized resource bundle</li>
+              <li>buttonName from the localized resource bundle</li>
+              <li>the body of the tag</li>
+              <li>the value attribute of the tag</li>
+            </ul>
+        ]]></description>
+        <display-name>button</display-name>
+        <name>button</name>
+        <tag-class>net.sourceforge.stripes.tag.InputButtonTag</tag-class>
+        <body-content>JSP</body-content>
+
+        <!-- Start: Standard Form Input attributes -->
+        <attribute><description>The name of the form field.</description><name>name</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>The size of the form field. (HTML Pass-through)</description><name>size</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>A default value for the form field. Can be a literal value, or an EL expression.</description><name>value</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Disables the input element when it first loads so that the user can not write text in it, or select it. (HTML Pass-through)</description><name>disabled</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <!-- End: Standard Form Input   attributes -->
+
+        <!-- Start: Standard HTML attributes -->
+        <attribute><description>Keyboard shortcut to access the element. (HTML Pass-through)</description><name>accesskey</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>The CSS class to be applied to the element. (HTML Pass-through)</description><name>class</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Text direction. (HTML Pass-through)</description><name>dir</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>A unique identifier for the HTML tag on the pgae. (HTML Pass-through)</description><name>id</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>The language code of the element. (HTML Pass-through)</description><name>lang</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the element loses focus. (HTML Pass-through)</description><name>onblur</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the element changes. (HTML Pass-through)</description><name>onchange</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run on each mouse click. (HTML Pass-through)</description><name>onclick</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run on a double-click of the mouse. (HTML Pass-through)</description><name>ondblclick</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the element acquires focus. (HTML Pass-through)</description><name>onfocus</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a key is depressed. (HTML Pass-through)</description><name>onkeydown</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a key is pressed and released. (HTML Pass-through)</description><name>onkeypress</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a key is released. (HTML Pass-through)</description><name>onkeyup</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a mouse button is depressed. (HTML Pass-through)</description><name>onmousedown</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the mouse pointer is moved. (HTML Pass-through)</description><name>onmousemove</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the mouse pointer moves out of the element. (HTML Pass-through)</description><name>onmouseout</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the mouse pointer moves over the element. (HTML Pass-through)</description><name>onmouseover</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a mouse button is released. (HTML Pass-through)</description><name>onmouseup</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when an element is selected. (HTML Pass-through)</description><name>onselect</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Inline CSS style fragment that applies to the element (HTML Pass-through)</description><name>style</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>The tab order of the element. (HTML Pass-through)</description><name>tabindex</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Tool-tip text for the element. (HTML Pass-through)</description><name>title</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <!-- End: Standard HTML attributes -->
+        <dynamic-attributes>false</dynamic-attributes>
+    </tag>
+
+    <tag>
+        <description><![CDATA[
+            <p>Implements an HTML tag that generates form fields of type &lt;input type=&quot;
+            checkbox&quot;/&gt;.
+            Since a single checkbox widget on a HTML page can have only a single value, the value tag
+            attribute must always resolve to a scalar value which will be converted to a String using
+            the Stripes Formatting system, or by caling toString() if an appropriate Formatter is
+            not found.</p>
+
+            <p>Checkboxes are commonly used in two ways.  The first and simplest case uses a single
+            checkbox to set a boolean or Boolean value on the ActionBean.  To do this use the
+            following syntax:</p>
+
+            <pre>&lt;stripes:checkbox name="likesChocolate"/&gt;</pre>
+
+            <p>When the <tt>value</tt> attribute is omitted, as above, the checkbox defaults to
+            the simple behaviour of sending "true" to the server when checked and nothing to the
+            server when unchecked.  For this reason it is best to use <tt>boolean</tt> values,
+            or <tt>Boolean</tt> values initialized to Boolean.FALSE.</p>
+
+            <p>The other common usage is to use checkboxes in a manner similar to a multi-select.
+            For example:</p>
+
+<pre>
+&lt;stripes:checkbox name="likes" value="chocolate"/&gt;
+&lt;stripes:checkbox name="likes" value="marshmallows"/&gt;
+&lt;stripes:checkbox name="likes" value="ice cream"/&gt;
+</pre>
+
+            <p>In this case there are multiple checkboxes each with the same name, but different
+            values.  A value is submitted to the server for each checked checkbox, and normally
+            bound to an array or List property on the ActionBean.</p>
+
+            <p>Checkboxes perform automatic (re-)population of state.  They prefer, in order, values
+            in the HttpServletRequest, values in the ActionBean and lastly values set using
+            checked=&quot;&quot; on the page. The &quot;checked&quot; attribute is a complex
+            attribute and may be a Collection, an Array or a scalar Java Object.  In the first
+            two cases a check is performed to see if the value in the value=&quot;foo&quot;
+            attribute is one of the elements in the checked collection or array.  In the last case,
+            the value is matched directly against the String form of the checked attribute.
+            If in any case a checkbox's value matches then a checked=&quot;checked&quot;
+            attribute will be added to the HTML written.</p>
+
+            <p>The tag may include a body and if present the body is converted to a String and
+            overrides the <b>checked</b> tag attribute.</p>
+        ]]></description>
+        <display-name>checkbox</display-name>
+        <name>checkbox</name>
+        <tag-class>net.sourceforge.stripes.tag.InputCheckBoxTag</tag-class>
+        <body-content>JSP</body-content>
+
+        <attribute>
+            <description>
+                References either a scalar object/String or an Array or a Collection. If the value
+                of the checkbox is found to equal or be contained by the 'checked' object then the
+                checkbox will default to rendering as checked.
+            </description>
+            <name>checked</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <type>java.lang.Object</type>
+        </attribute>
+        <attribute><description>The type used to format the object. If the value is a date, valid values are 'date', 'time' and 'datetime'. If the value is a Number, valid values are 'number', 'percentage' and 'currency'.</description><name>formatType</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>The pattern to apply. Can be either a named pattern or an actual pattern as understood by java.text.DateFormat or java.text.NumberFormat as appropriate for the type of object being formatted.</description><name>formatPattern</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+
+        <!-- Start: Standard Form Input attributes -->
+        <attribute>
+            <description><![CDATA[
+                The value that will be submitted to the server if this checkbox is in the checked state
+                when clicked.  If no value is specified, the value defaults to <b>true</b> (or more
+                correctly Boolean.TRUE).  While other inputs like text and password repopulate their
+                state into the value attribute, this is not the case with checkbox, where the value
+                is an invariant.
+            ]]></description>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <type>java.lang.Object</type>
+        </attribute>
+        <attribute><description>The name of the form field.</description><name>name</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>The size of the form field. (HTML Pass-through)</description><name>size</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Disables the input element when it first loads so that the user can not write text in it, or select it. (HTML Pass-through)</description><name>disabled</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <!-- End: Standard Form Input   attributes -->
+
+        <!-- Start: Standard HTML attributes -->
+        <attribute><description>Keyboard shortcut to access the element. (HTML Pass-through)</description><name>accesskey</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>The CSS class to be applied to the element. (HTML Pass-through)</description><name>class</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Text direction. (HTML Pass-through)</description><name>dir</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>A unique identifier for the HTML tag on the pgae. (HTML Pass-through)</description><name>id</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>The language code of the element. (HTML Pass-through)</description><name>lang</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the element loses focus. (HTML Pass-through)</description><name>onblur</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the element changes. (HTML Pass-through)</description><name>onchange</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run on each mouse click. (HTML Pass-through)</description><name>onclick</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run on a double-click of the mouse. (HTML Pass-through)</description><name>ondblclick</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the element acquires focus. (HTML Pass-through)</description><name>onfocus</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a key is depressed. (HTML Pass-through)</description><name>onkeydown</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a key is pressed and released. (HTML Pass-through)</description><name>onkeypress</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a key is released. (HTML Pass-through)</description><name>onkeyup</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a mouse button is depressed. (HTML Pass-through)</description><name>onmousedown</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the mouse pointer is moved. (HTML Pass-through)</description><name>onmousemove</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the mouse pointer moves out of the element. (HTML Pass-through)</description><name>onmouseout</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the mouse pointer moves over the element. (HTML Pass-through)</description><name>onmouseover</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a mouse button is released. (HTML Pass-through)</description><name>onmouseup</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when an element is selected. (HTML Pass-through)</description><name>onselect</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Inline CSS style fragment that applies to the element (HTML Pass-through)</description><name>style</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>The tab order of the element. (HTML Pass-through)</description><name>tabindex</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Tool-tip text for the element. (HTML Pass-through)</description><name>title</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <!-- End: Standard HTML attributes -->
+        <dynamic-attributes>false</dynamic-attributes>
+    </tag>
+
+    <tag>
+        <description><![CDATA[
+            <p>The errors tag has two modes, one where it displays all validation errors in a list
+            and a second mode when there is a single enclosed field-error tag that has no name attribute
+            in which case this tag iterates over the body, displaying each error in turn in place
+            of the field-error tag.</p>
+
+            <p>In the first mode, where the default output is used, it is possible to change the output
+            for the entire application using a set of resources in the error messages bundle
+            (StripesResources.properties unless you have configured another).  If the properties are
+            undefined, the tag will output the text "Validation Errors" in a div with css class errorHeader,
+            then output an unordered list of error messages.  The following four resource strings
+            (shown with their default values) can be modified to create different default ouput:</p>
+
+            <ul>
+              <li>stripes.errors.header=&lt;div class="errorHeader"&gt;Validation Errors&lt;/div&gt;&lt;ul&gt;</li>
+              <li>stripes.errors.footer=&lt;/ul&gt;</li>
+              <li>stripes.errors.beforeError=&lt;li&gt;</li>
+              <li>stripes.errors.afterError=&lt;/li&gt;</li>
+            </ul>
+
+            <p>The second mode allows customization of the output for a specific page by nesting
+            the following tag inside the errors tag: &lt;stripes:individual-error&gt;,
+            &lt;stripes:error-header&gt; and &lt;stripes:error-footer&gt;. An example, re-creating
+            the default output using this technique follow:</p>
+
+<pre>&lt;stripes:errors&gt;
+     &lt;stripes:errors-header&gt;&lt;div class=&quot;errorHeader&quot;&gt;Validation Errors&lt;/div&gt;&lt;ul&gt;&lt;/stripes:errors-header&gt;
+     &lt;li&gt;&lt;stripes:individual-error/&gt;&lt;/li&gt;
+     &lt;stripes:errors-footer&gt;&lt;/ul&gt;&lt;/stripes:errors-footer&gt;
+&lt;/stripes:errors&gt;
+</pre>
+
+            <p>The errors tag can be used to display errors for a single field by supplying it
+            with a 'field' attribute which matches the name of a field on the page. In this case the tag
+            will display only if errors exist for the named field.  In this mode the tag will fist look for
+            resources named:</p>
+
+            <ul>
+              <li>stripes.fieldErrors.header</li>
+              <li>stripes.fieldErrors.footer</li>
+              <li>stripes.fieldErrors.beforeError</li>
+              <li>stripes.fieldErrors.afterError</li>
+            </ul>
+
+            <p>If the <tt>fieldErrors</tt> resources cannot be found, the tag will default to using the
+            sames resources and defaults as when displaying for all fields.</p>
+
+            <p>Similar to the above, field specific, manner of display the errors tag can also be used
+            to output only errors not associated with a field, i.e. global errors.  This is done by setting
+            the <tt>globalErrorsOnly</tt> attribute to true.</p>
+
+            <p>This tag has several ways of being attached to the errors of a specific action request.
+            If the tag is inside a form tag, it will display only errors that are associated
+            with that form. If supplied with an 'action' attribute, it will display errors only errors
+            associated with a request to that URL. Finally, if neither is the case, it will display
+            errors associated with the action bean for the current request..</p>
+
+        ]]></description>
+        <display-name>errors</display-name>
+        <name>errors</name>
+        <tag-class>net.sourceforge.stripes.tag.ErrorsTag</tag-class>
+        <tei-class>net.sourceforge.stripes.tag.ErrorsTagExtraInfo</tei-class>
+        <body-content>JSP</body-content>
+        <attribute>
+            <description>
+                If supplied, the errors tag will only output errors for a form that posted to the
+                supplied action path. Can be used when there are multiple forms on the page and
+                you wish to display errors in different places for each form, but not necessarily
+                inside of the form tags.
+            </description>
+            <name>action</name><required>false</required><rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>
+                The fully qualified name of an ActionBean class, or alternatively a Class instance
+                for an ActionBean class.  An alternative to the 'action' attribute, the 'beanclass'
+                attribute will generate an action appropriate for the ActionBean identified. Note
+                that if an "ActionBean" that does not yet exist is identified an exception will
+                be thrown!
+            </description>
+            <name>beanclass</name><required>false</required><rtexprvalue>true</rtexprvalue>
+            <type>java.lang.Object</type>
+        </attribute>
+        <attribute>
+            <description>
+                If supplied, the errors tag will only output errors associated with the
+                named field.
+            </description>
+            <name>field</name><required>false</required><rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>
+                If set to true then the tag will display only errors that are not directly
+                associated with a field, i.e. global errors.
+            </description>
+            <name>globalErrorsOnly</name><required>false</required><rtexprvalue>true</rtexprvalue>
+        </attribute>
+    </tag>
+
+    <tag>
+        <description>
+            Tag contents are displayed only when showing the last row of an errors tag.
+        </description>
+        <display-name>errors-footer</display-name>
+        <name>errors-footer</name>
+        <tag-class>net.sourceforge.stripes.tag.ErrorsFooterTag</tag-class>
+        <body-content>JSP</body-content>
+    </tag>
+
+    <tag>
+        <description>
+            Tag contents are displayed only when showing the first row of an errors tag.
+        </description>
+        <display-name>errors-header</display-name>
+        <name>errors-header</name>
+        <tag-class>net.sourceforge.stripes.tag.ErrorsHeaderTag</tag-class>
+        <body-content>JSP</body-content>
+    </tag>
+
+    <tag>
+        <description><![CDATA[
+            <p>Tag that generates HTML form fields of type &lt;input type=&quot;file&quot ... /&gt;.
+            The only functionality provided above and beyond a straight HTML input tag is that the
+            tag will find its enclosing form tag and ensure that the for is set to POST instead of
+            GET, and that the encoding type of the form is properly set to multipart/form-data as
+            both these settings are necessary to correctly perform file uploads.</p>
+
+            <p>Does not perform repopulation because default values for
+            &lt;input type=&quot;file&quot;/&gt; are not allowed by the HTML specification.  One
+            can only imagine this is because a malicous page author could steal a user's files by
+            defaulting the value and using JavaScript to auto-submit forms!  As a result the tag
+            does not accept a body because it would have no use for any generated content.</p>
+        ]]></description>
+        <display-name>file</display-name>
+        <name>file</name>
+        <tag-class>net.sourceforge.stripes.tag.InputFileTag</tag-class>
+        <body-content>empty</body-content>
+
+        <!-- Start: Standard Form Input attributes -->
+        <attribute><description>The name of the form field.</description><name>name</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>The size of the form field. (HTML Pass-through)</description><name>size</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Disables the input element when it first loads so that the user can not write text in it, or select it. (HTML Pass-through)</description><name>disabled</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <!-- End: Standard Form Input   attributes -->
+
+        <attribute>
+            <description>A comma separated list of mime-types accepted for file uploads. (HTML Pass-through)</description>
+            <name>accept</name><required>false</required><rtexprvalue>true</rtexprvalue>
+        </attribute>
+
+        <!-- Start: Standard HTML attributes -->
+        <attribute><description>Keyboard shortcut to access the element. (HTML Pass-through)</description><name>accesskey</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>The CSS class to be applied to the element. (HTML Pass-through)</description><name>class</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Text direction. (HTML Pass-through)</description><name>dir</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>A unique identifier for the HTML tag on the pgae. (HTML Pass-through)</description><name>id</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>The language code of the element. (HTML Pass-through)</description><name>lang</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the element loses focus. (HTML Pass-through)</description><name>onblur</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the element changes. (HTML Pass-through)</description><name>onchange</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run on each mouse click. (HTML Pass-through)</description><name>onclick</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run on a double-click of the mouse. (HTML Pass-through)</description><name>ondblclick</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the element acquires focus. (HTML Pass-through)</description><name>onfocus</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a key is depressed. (HTML Pass-through)</description><name>onkeydown</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a key is pressed and released. (HTML Pass-through)</description><name>onkeypress</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a key is released. (HTML Pass-through)</description><name>onkeyup</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a mouse button is depressed. (HTML Pass-through)</description><name>onmousedown</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the mouse pointer is moved. (HTML Pass-through)</description><name>onmousemove</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the mouse pointer moves out of the element. (HTML Pass-through)</description><name>onmouseout</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the mouse pointer moves over the element. (HTML Pass-through)</description><name>onmouseover</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a mouse button is released. (HTML Pass-through)</description><name>onmouseup</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when an element is selected. (HTML Pass-through)</description><name>onselect</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Inline CSS style fragment that applies to the element (HTML Pass-through)</description><name>style</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>The tab order of the element. (HTML Pass-through)</description><name>tabindex</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Tool-tip text for the element. (HTML Pass-through)</description><name>title</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <!-- End: Standard HTML attributes -->
+        <dynamic-attributes>false</dynamic-attributes>
+    </tag>
+
+    <tag>
+        <description>
+            Stripes' HTML form tag. Provides a standard HTML form tag interface, but allows
+            other stripes input tags to re-populate their values.  Also includes a hidden field in
+            the form for the page name that the form is being rendered on (to allow forwarding to
+            the same page in the case of a validation error.
+        </description>
+        <display-name>form</display-name>
+        <name>form</name>
+        <tag-class>net.sourceforge.stripes.tag.FormTag</tag-class>
+        <body-content>JSP</body-content>
+
+        <attribute>
+            <description>
+                The URL to which this form will post. Expected to be a web-app relative path - the
+                tag will prepend the context path to any action that begins with a slash and does
+                not already contain the context path. Should match a URL to which an ActionBean
+                has been bound.  Required unless 'beanclass' is provided.
+            </description>
+            <name>action</name><required>false</required><rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>
+                The fully qualified name of an ActionBean class, or alternatively a Class instance
+                for an ActionBean class.  An alternative to the 'action' attribute, the 'beanclass'
+                attribute will generate an action appropriate for the ActionBean identified. Note
+                that if an "ActionBean" that does not yet exist is identified an exception will
+                be thrown!
+            </description>
+            <name>beanclass</name><required>false</required><rtexprvalue>true</rtexprvalue>
+            <type>java.lang.Object</type>
+        </attribute>
+        <attribute>
+            <description>
+                The name of the form field that should receive focus when the page is loaded. Two
+                special values are recognized, 'first' and the empty string; these values cause
+                the form to set focus on the first element in the form.  If any value is set,
+                and the form has validation errors, the behaviour is altered and the first field
+                with validation errors is focused instead.
+            </description>
+            <name>focus</name><required>false</required><rtexprvalue>true</rtexprvalue>
+            <type>java.lang.String</type>
+        </attribute>
+        <attribute>
+            <description>A comma separated list of content types that it is acceptable to submit through this form. (HTML Pass-through)</description>
+            <name>accept</name><required>false</required><rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>A comma separated list of possible character sets for form data. Will be written to the page as accept-charset. (HTML Pass-through)</description>
+            <name>acceptcharset</name><required>false</required><rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>
+                The mime type used to encode the content of this form. This value will be overridden if one or more Stripes
+                file input tags is used within the body of the form.
+            </description>
+            <name>enctype</name><required>false</required><rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>The HTTP method used for sending data to the server. Options are GET and POST. Default is GET. (HTML Pass-through)</description>
+            <name>method</name><required>false</required><rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>The unique name of the form. (HTML Pass-through)</description>
+            <name>name</name><required>false</required><rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>Where the target URL is to be opened. One of _blank, _self, _parent and _top. (HTML Pass-through)</description>
+            <name>target</name><required>false</required><rtexprvalue>true</rtexprvalue>
+        </attribute>
+
+        <attribute>
+            <description>Scripting code run when the form is reset. (HTML Pass-through)</description>
+            <name>onreset</name><required>false</required><rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>Scripting code run prior to the form being submitted to the server, (HTML Pass-through)</description>
+            <name>onsubmit</name><required>false</required><rtexprvalue>true</rtexprvalue>
+        </attribute>
+
+        <!-- Start: Standard HTML attributes -->
+        <attribute><description>The CSS class to be applied to the element. (HTML Pass-through)</description><name>class</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Text direction. (HTML Pass-through)</description><name>dir</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>A unique identifier for the HTML tag on the pgae. (HTML Pass-through)</description><name>id</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>The language code of the element. (HTML Pass-through)</description><name>lang</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run on each mouse click. (HTML Pass-through)</description><name>onclick</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run on a double-click of the mouse. (HTML Pass-through)</description><name>ondblclick</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a key is depressed. (HTML Pass-through)</description><name>onkeydown</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a key is pressed and released. (HTML Pass-through)</description><name>onkeypress</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a key is released. (HTML Pass-through)</description><name>onkeyup</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a mouse button is depressed. (HTML Pass-through)</description><name>onmousedown</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the mouse pointer is moved. (HTML Pass-through)</description><name>onmousemove</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the mouse pointer moves out of the element. (HTML Pass-through)</description><name>onmouseout</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the mouse pointer moves over the element. (HTML Pass-through)</description><name>onmouseover</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a mouse button is released. (HTML Pass-through)</description><name>onmouseup</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Inline CSS style fragment that applies to the element (HTML Pass-through)</description><name>style</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Tool-tip text for the element. (HTML Pass-through)</description><name>title</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <!-- End: Standard HTML attributes -->
+        <dynamic-attributes>false</dynamic-attributes>
+    </tag>
+
+    <tag>
+        <description><![CDATA[
+            <p>Generates one or more &lt;input type=&quot;hidden&quot; ... /&gt; HTML tags based on
+            the value supplied. The hidden tag assigns the value attribute by scanning in the
+            following order:
+            <ul>
+              <li>for one or more values with the same name in the HttpServletRequest</li>
+              <li>for a field on the ActionBean with the same name (if a bean instance is present)</li>
+              <li>by collapsing the body content to a String, if a body is present</li>
+              <li>referring to the result of the EL expression contained in the value attribute of the tag.</li>
+            </ul>
+            </p>
+
+            <p>The result of this scan can produce either a Collection, an Array or any other
+            Object. In the first two cases the tag will output an HTML hidden form field tag for
+            each value in the Collection or Array.  In all other cases the Object is toString()'d
+            (unless it is null) and a single hidden field will be written.</p>
+        ]]></description>
+        <display-name>hidden</display-name>
+        <name>hidden</name>
+        <tag-class>net.sourceforge.stripes.tag.InputHiddenTag</tag-class>
+        <body-content>JSP</body-content>
+
+        <!-- Start: Standard Form Input attributes -->
+        <attribute><description>The name of the form field.</description><name>name</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute>
+            <description>A default value for the form field. Can be a literal value, or an EL expression.</description>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <type>java.lang.Object</type>
+        </attribute>
+        <!-- End: Standard Form Input   attributes -->
+        <attribute><description>The type used to format the object. If the value is a date, valid values are 'date', 'time' and 'datetime'. If the value is a Number, valid values are 'number', 'percentage' and 'currency'.</description><name>formatType</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>The pattern to apply. Can be either a named pattern or an actual pattern as understood by java.text.DateFormat or java.text.NumberFormat as appropriate for the type of object being formatted.</description><name>formatPattern</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+
+        <!-- Start: Standard HTML attributes -->
+        <attribute><description>Keyboard shortcut to access the element. (HTML Pass-through)</description><name>accesskey</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>The CSS class to be applied to the element. (HTML Pass-through)</description><name>class</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Text direction. (HTML Pass-through)</description><name>dir</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>A unique identifier for the HTML tag on the pgae. (HTML Pass-through)</description><name>id</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>The language code of the element. (HTML Pass-through)</description><name>lang</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the element loses focus. (HTML Pass-through)</description><name>onblur</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the element changes. (HTML Pass-through)</description><name>onchange</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run on each mouse click. (HTML Pass-through)</description><name>onclick</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run on a double-click of the mouse. (HTML Pass-through)</description><name>ondblclick</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the element acquires focus. (HTML Pass-through)</description><name>onfocus</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a key is depressed. (HTML Pass-through)</description><name>onkeydown</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a key is pressed and released. (HTML Pass-through)</description><name>onkeypress</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a key is released. (HTML Pass-through)</description><name>onkeyup</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a mouse button is depressed. (HTML Pass-through)</description><name>onmousedown</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the mouse pointer is moved. (HTML Pass-through)</description><name>onmousemove</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the mouse pointer moves out of the element. (HTML Pass-through)</description><name>onmouseout</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the mouse pointer moves over the element. (HTML Pass-through)</description><name>onmouseover</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a mouse button is released. (HTML Pass-through)</description><name>onmouseup</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when an element is selected. (HTML Pass-through)</description><name>onselect</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Inline CSS style fragment that applies to the element (HTML Pass-through)</description><name>style</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>The tab order of the element. (HTML Pass-through)</description><name>tabindex</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Tool-tip text for the element. (HTML Pass-through)</description><name>title</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <!-- End: Standard HTML attributes -->
+        <dynamic-attributes>false</dynamic-attributes>
+    </tag>
+
+    <tag>
+        <description><![CDATA[
+           <p>Tag that generates an image input button for use in HTML forms, e.g:</p>
+
+           <pre>&lt;input name="foo" type="image" src="/app/foo.gif" alt="foo"/&gt;</pre>
+
+           <p>Provides a couple of facilities above and beyond using the plain HTML tag. The main
+           advantage is a localization capability. The tag looks in the Stripes Field Name
+           message bundle for resources to be used as the <tt>src</tt> URL for the image and the
+           <tt>alt</tt> text of the image.  In order it will look for and use:</p>
+
+           <ul>
+             <li>resource: <tt>actionPath.inputName.[src|alt]</tt></li>
+             <li>resource: <tt>inputName.[src|alt]</tt></li>
+             <li>tag attributes: <tt>src</tt> and <tt>alt</tt>
+           </ul>
+
+           <p>If localized values exist these are preferred over the values specified directly
+           on the tag.</p>
+
+           <p>Additionally if the 'src' URL (whether acquired from the tag attribute or the
+           resource bundle) starts with a slash, the tag will prepend the context path of the
+           web application.</p>
+        ]]></description>
+        <display-name>image</display-name>
+        <name>image</name>
+        <tag-class>net.sourceforge.stripes.tag.InputImageTag</tag-class>
+        <body-content>empty</body-content>
+
+        <!-- Start: Standard Form Input attributes -->
+        <attribute><description>The name of the form field.</description><name>name</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute>
+            <description>A symbolic value that will get submitted to the server when the image button is clicked. (HTML Pass-through)</description>
+            <name>value</name><required>false</required><rtexprvalue>true</rtexprvalue><type>java.lang.Object</type>
+        </attribute>
+        <!-- End: Standard Form Input   attributes -->
+        <attribute>
+            <description>Defines the alignment of text following the image. Deprecated, use style instead. (HTML Pass-through)</description>
+            <name>align</name><required>false</required><rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>
+                The alternative text for the image button. Used only if a localized value cannot be found as described
+                in the in the tag description. (HTML Pass-through)
+            </description>
+            <name>alt</name><required>false</required><rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute><description>Disables the input element when it first loads so that the user can not write text in it, or select it. (HTML Pass-through)</description><name>disabled</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute>
+            <description>
+                The src URL for the image button.  If the value starts with a slash it will have the context path
+                prepended.  Used only if a localized value cannot be found as described in the tag description. (HTML Pass-through)
+            </description>
+            <name>src</name><required>false</required><rtexprvalue>true</rtexprvalue>
+        </attribute>
+
+        <!-- Start: Standard HTML attributes -->
+        <attribute><description>Keyboard shortcut to access the element. (HTML Pass-through)</description><name>accesskey</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>The CSS class to be applied to the element. (HTML Pass-through)</description><name>class</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Text direction. (HTML Pass-through)</description><name>dir</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>A unique identifier for the HTML tag on the pgae. (HTML Pass-through)</description><name>id</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>The language code of the element. (HTML Pass-through)</description><name>lang</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the element loses focus. (HTML Pass-through)</description><name>onblur</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the element changes. (HTML Pass-through)</description><name>onchange</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run on each mouse click. (HTML Pass-through)</description><name>onclick</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run on a double-click of the mouse. (HTML Pass-through)</description><name>ondblclick</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the element acquires focus. (HTML Pass-through)</description><name>onfocus</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a key is depressed. (HTML Pass-through)</description><name>onkeydown</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a key is pressed and released. (HTML Pass-through)</description><name>onkeypress</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a key is released. (HTML Pass-through)</description><name>onkeyup</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a mouse button is depressed. (HTML Pass-through)</description><name>onmousedown</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the mouse pointer is moved. (HTML Pass-through)</description><name>onmousemove</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the mouse pointer moves out of the element. (HTML Pass-through)</description><name>onmouseout</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the mouse pointer moves over the element. (HTML Pass-through)</description><name>onmouseover</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a mouse button is released. (HTML Pass-through)</description><name>onmouseup</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when an element is selected. (HTML Pass-through)</description><name>onselect</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Inline CSS style fragment that applies to the element (HTML Pass-through)</description><name>style</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>The tab order of the element. (HTML Pass-through)</description><name>tabindex</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Tool-tip text for the element. (HTML Pass-through)</description><name>title</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <!-- End: Standard HTML attributes -->
+        <dynamic-attributes>false</dynamic-attributes>
+    </tag>
+
+    <tag>
+        <description>
+            Placeholder tag that is to be used only inside of a errors tag.  When nested inside
+            an errors tag, causes the errors tag to operate as an iterator, outputting its body
+            for each error present, placing the text of the error where the individual-error tag
+            is found.
+        </description>
+        <display-name>individual-error</display-name>
+        <name>individual-error</name>
+        <tag-class>net.sourceforge.stripes.tag.IndividualErrorTag</tag-class>
+        <body-content>empty</body-content>
+    </tag>
+
+    <tag>
+        <description><![CDATA[
+            <p>Label tag that can look up localized field labels and render differently when the
+            labelled field is in error.  While the label field is usually used to generated form
+            field labels, it can be used to generate HTML label tags with arbitrary localized or
+            non-localized values.</p>
+
+            <p>It is important to understand the relationship between the <tt>name</tt> and
+            <tt>for</tt> attributes of the <tt>stripes:label</tt> tag.  The <tt>for</tt> attribute
+            is used directly to generated the <tt>for</tt> attribute of the generated HTML
+            <tt>label</tt> tag, and as such should correspond to the HTML <tt>id</tt> attribute
+            of the input tag for which it is a label.  If the <tt>name</tt> attribute is omitted
+            then the value of the <tt>for</tt> attribute will also be used as the <tt>name</tt>
+            attribute.</p>
+
+            <p>The value of the label is set by searching for a non-null value in the following
+             order:</p>
+
+            <ul>
+                <li>{formAction}.{name} in the form field localization bundle</li>
+                <li>{name} in the form field localization bundle</li>
+                <li>The body of the label tag</li>
+                <li>A warning message telling you to supply a label value somewhere!</li>
+            </ul>
+
+            <p>In the case of indexed or mapped form fields (e.g. <tt>foo[3].bar</tt>) the
+            indexing and mapping will be removed from the name prior to using it to lookup
+            labels (e.g. <tt>foo.bar</tt>).  This is done to remain consistent with the way
+            field names are looked up for error messages.</p>
+
+            <p>It should be noted that in cases where a form field and HTML control are
+            one-to-one (e.g. text, password, select) the name of the label will usually equal
+            the name of the control.  However, this need not be the case.  You may use any value
+            for the name of the label, <b>but</b> the label will only perform error rendering
+            correctly if the name is equal to the name of the form field being labelled. To
+            illustrate this point consider the following example:</p>
+
+<pre>
+&lt;th&gt;
+    &lt;stripes:label for="bug.status"/&gt;:
+&lt;/th&gt;
+&lt;td&gt;
+	&lt;c:forEach var="status" items="&lt;%=Status.values()%&gt;"&gt;
+		&lt;stripes:radio id="bug.status.${stripes:enumName(status)}"
+		               name="bug.status"
+		               value="${stripes:enumName(status)}"/&gt;
+		&lt;stripes:label for="bug.status.${stripes:enumName(status)}"&gt;
+			${stripes:enumName(status)}
+		&lt;/stripes:label&gt;
+	&lt;/c:forEach&gt;
+&lt;/td&gt;
+</pre>
+
+        <p>The above example uses one label tag at the top (with <tt>for="bug.status"</tt>) that
+        labels a row in the table and will display differently when the <tt>bug.status</tt> field
+        is in error.  It then employs a label tag for each radio button.  These are bound to the
+        individual radio buttons (clicking on the label will select the appropriate radio button),
+        and default to the name of the enum value if a localized name isn't found.  Since these
+        labels do not match the field name exactly, they will not render differently when the
+        field is in error.</p>
+        ]]></description>
+        <display-name>label</display-name>
+        <name>label</name>
+        <tag-class>net.sourceforge.stripes.tag.InputLabelTag</tag-class>
+        <body-content>JSP</body-content>
+
+        <attribute>
+            <description>
+                The name of the field being labelled (or of the label if it is not specific to a
+                field) if the name of the field is not the same as the HTML id of the field. If the
+                name and id are the same, the for attribute should be used alone.
+            </description>
+            <name>name</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+        </attribute>
+
+        <attribute>
+            <description>
+                The HTML id of the field/control being labelled.  If the name attribute is
+                omitted, the value of this attribute will also be used as the name.
+            </description>
+            <name>for</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+        </attribute>
+
+        <!-- Start: Standard HTML attributes -->
+        <attribute><description>Keyboard shortcut to access the element. (HTML Pass-through)</description><name>accesskey</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>The CSS class to be applied to the element. (HTML Pass-through)</description><name>class</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Text direction. (HTML Pass-through)</description><name>dir</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>A unique identifier for the HTML tag on the pgae. (HTML Pass-through)</description><name>id</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>The language code of the element. (HTML Pass-through)</description><name>lang</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the element loses focus. (HTML Pass-through)</description><name>onblur</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the element changes. (HTML Pass-through)</description><name>onchange</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run on each mouse click. (HTML Pass-through)</description><name>onclick</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run on a double-click of the mouse. (HTML Pass-through)</description><name>ondblclick</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the element acquires focus. (HTML Pass-through)</description><name>onfocus</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a key is depressed. (HTML Pass-through)</description><name>onkeydown</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a key is pressed and released. (HTML Pass-through)</description><name>onkeypress</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a key is released. (HTML Pass-through)</description><name>onkeyup</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a mouse button is depressed. (HTML Pass-through)</description><name>onmousedown</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the mouse pointer is moved. (HTML Pass-through)</description><name>onmousemove</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the mouse pointer moves out of the element. (HTML Pass-through)</description><name>onmouseout</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the mouse pointer moves over the element. (HTML Pass-through)</description><name>onmouseover</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a mouse button is released. (HTML Pass-through)</description><name>onmouseup</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when an element is selected. (HTML Pass-through)</description><name>onselect</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Inline CSS style fragment that applies to the element (HTML Pass-through)</description><name>style</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>The tab order of the element. (HTML Pass-through)</description><name>tabindex</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Tool-tip text for the element. (HTML Pass-through)</description><name>title</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <!-- End: Standard HTML attributes -->
+        <dynamic-attributes>false</dynamic-attributes>
+    </tag>
+
+    <tag>
+        <description><![CDATA[
+            <p>Tag that generates HTML links, used for linking to pages and ActionBean events
+            within a Stripes application. Works in concert with zero or more nested link-param tags
+            in order to allow addition of arbitrary parameters to any URL. The body of the tag,
+            minus any link-param tags, is trimmed for whitespace at either end, and is then used
+            as the contents of the link body.</p>
+
+            <p>There are two attributes which are not a mirrors of attributes on the HTML anchor
+            tag. The first is the 'event' attribute. This allows specification of a specific event
+             to trigger when linking to an ActionBean URL. The second is 'beanclass' which allows
+             the specification of the class name or Class instance for an ActionBean as an
+             alternative to specifying the 'href' attribute.</p>
+        ]]></description>
+        <display-name>link</display-name>
+        <name>link</name>
+        <tag-class>net.sourceforge.stripes.tag.LinkTag</tag-class>
+        <body-content>JSP</body-content>
+
+        <attribute>
+            <description>
+                The (optional) event that should be fired if the link is to an ActionBean. If not
+                supplied then the tag will not render an explicit event (but one may by built in
+                to the URL/href supplied).
+            </description>
+            <name>event</name><required>false</required><rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>
+                The fully qualified name of an ActionBean class, or alternatively a Class instance
+                for an ActionBean class.  An alternative to the 'href' attribute, the 'beanclass'
+                attribute will generate an href appropriate for the ActionBean identified. Note
+                that if an ActionBean that does not yet exist is identified an exception will
+                be thrown!
+            </description>
+            <name>beanclass</name><required>false</required><rtexprvalue>true</rtexprvalue>
+            <type>java.lang.Object</type>
+        </attribute>
+        <attribute>
+            <description>The character set used to encode the referenced page. (HTML Pass-through)</description>
+            <name>charset</name><required>false</required><rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>Used to define a region for clicking in an image map. (HTML Pass-through)</description>
+            <name>coords</name><required>false</required><rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>
+                The target URL. If the URL starts with a slash and does not contain the current
+                web application context path, then the context path will be prepended to the URL.
+                (HTML Pass-through)
+            </description>
+            <name>href</name><required>false</required><rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>The language of the target page. (HTML Pass-through)</description>
+            <name>hreflang</name><required>false</required><rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>The name of an anchor.  (HTML Pass-through)</description>
+            <name>name</name><required>false</required><rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>
+                Specified the relationship between the current page and the target URL.
+                (HTML Pass-through)
+            </description>
+            <name>rel</name><required>false</required><rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>Like rel, but in reverse.</description>
+            <name>rev</name><required>false</required><rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>Used to define a shape within an image map.</description>
+            <name>shape</name><required>false</required><rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>The frame or window in which the link will open.</description>
+            <name>target</name><required>false</required><rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>The MIME type of the target URL.</description>
+            <name>type</name><required>false</required><rtexprvalue>true</rtexprvalue>
+        </attribute>
+
+        <!-- Start: Standard HTML attributes -->
+        <attribute><description>Keyboard shortcut to access the element. (HTML Pass-through)</description><name>accesskey</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>The CSS class to be applied to the element. (HTML Pass-through)</description><name>class</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Text direction. (HTML Pass-through)</description><name>dir</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>A unique identifier for the HTML tag on the pgae. (HTML Pass-through)</description><name>id</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>The language code of the element. (HTML Pass-through)</description><name>lang</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the element loses focus. (HTML Pass-through)</description><name>onblur</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the element changes. (HTML Pass-through)</description><name>onchange</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run on each mouse click. (HTML Pass-through)</description><name>onclick</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run on a double-click of the mouse. (HTML Pass-through)</description><name>ondblclick</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the element acquires focus. (HTML Pass-through)</description><name>onfocus</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a key is depressed. (HTML Pass-through)</description><name>onkeydown</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a key is pressed and released. (HTML Pass-through)</description><name>onkeypress</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a key is released. (HTML Pass-through)</description><name>onkeyup</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a mouse button is depressed. (HTML Pass-through)</description><name>onmousedown</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the mouse pointer is moved. (HTML Pass-through)</description><name>onmousemove</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the mouse pointer moves out of the element. (HTML Pass-through)</description><name>onmouseout</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the mouse pointer moves over the element. (HTML Pass-through)</description><name>onmouseover</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a mouse button is released. (HTML Pass-through)</description><name>onmouseup</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when an element is selected. (HTML Pass-through)</description><name>onselect</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Inline CSS style fragment that applies to the element (HTML Pass-through)</description><name>style</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>The tab order of the element. (HTML Pass-through)</description><name>tabindex</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Tool-tip text for the element. (HTML Pass-through)</description><name>title</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <!-- End: Standard HTML attributes -->
+        <dynamic-attributes>false</dynamic-attributes>
+    </tag>
+
+    <tag>
+        <description><![CDATA[
+            <b>DEPRECATED. Use the 'param' tag instead.</b>
+            Used to add parameters to a link that has been created with a stripes:link tag. If
+            the value attribute is present it will be used. If the value attribute is not present,
+            then the body of the tag will be used as the parameter value.  The value attribute
+            may identify either a scalar value, an Array or a Collection.  In the latter two cases
+            a URL parameter will be added per value in the Array or Collection.
+        ]]></description>
+        <display-name>link-param</display-name>
+        <name>link-param</name>
+        <tag-class>net.sourceforge.stripes.tag.LinkParamTag</tag-class>
+        <body-content>JSP</body-content>
+        <attribute>
+            <description>The name of the URL parameter.</description>
+            <name>name</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>The value (or values) of the URL parameter.</description>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <type>java.lang.Object</type>
+        </attribute>
+    </tag>
+
+    <tag>
+        <description><![CDATA[
+            <p>Displays a list of non-error messages to the user. The list of messages can come from
+            either the request (preferred) or the session (checked 2nd).  Lists of messages can be stored
+            under any arbitrary key in request or session and the key can be specified to the messages
+            tag.  If no key is specified then the default key (and therefore default set of messages) is
+            used. Note that by default the ActionBeanContext stores messages in a flash scope which
+            causes them to be exposed as request attributes in both the current and subsequent requests
+            (assuming a redirect is used).</p>
+
+            <p>While similar in concept to the ErrorsTag, the MessagesTag is significantly simpler. It deals
+            with a List of Message objects, and does not understand any association between messages and
+            form fields, or even between messages and forms.  It is designed to be used to show arbitrary
+            messages to the user, the prime example being a confirmation message displayed on the subsequent
+            page following an action.</p>
+
+            <p>The messages tag outputs a header before the messages, the messages themselves, and a footer
+            after the messages.  Default values are set for each of these four items.  Different values
+            can be specified in the error messages resource bundle (StripesResources.properties unless you
+            have configured another). The default configuration would look like this:
+
+            <ul>
+              <li>stripes.messages.header=&lt;ul class="messages"&gt;</li>
+              <li>stripes.messages.footer=&lt;/ul&gt;</li>
+              <li>stripes.messages.beforeMessage=&lt;li&gt;</li>
+              <li>stripes.messages.afterMessage=&lt;/li&gt;</li>
+            </ul>
+
+            <p>It should also be noted that while the errors tag supports custom headers and footers
+            through the use of nested tags, the messages tag does not support this. In fact the
+            messages tag does not support body content at all - it will simply be ignored.</p>
+        ]]></description>
+        <display-name>messages</display-name>
+        <name>messages</name>
+        <tag-class>net.sourceforge.stripes.tag.MessagesTag</tag-class>
+        <body-content>empty</body-content>
+        <attribute>
+            <description>
+                The name of the request or session attribute that the tag will use to find
+                messages for display.
+            </description>
+            <name>key</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+        </attribute>
+    </tag>
+
+    <tag>
+        <description><![CDATA[
+            <p>Generates an &lt;option value=&quot;foo&quot;&gt;Fooey&lt;/option&gt; HTML tag.
+            Coordinates with an enclosing select tag to determine it's state (i.e. whether or not
+            it is selected.)  As a result some of the logic regarding state repopulation is a bit
+            complex.</p>
+
+            <p>Since options can have only a single value per option the value attribute of the tag
+            must be a scalar, which will be converted into a String using a Formatter if an
+            appropriate one can be found, otherwise the toString() method will be invoked.The
+            presence of a &quot;selected&quot; attribute is used as an indication that this option
+            believes it should be selected by default - the value (as opposed to the presence)
+            of the selected attribute is never used....</p>
+
+            <p>The option tag delegates to its enclosing select tag to determine whether or not it
+            should be selected.  See the stripes:select for documentation on how it determines
+            selection status.  If the select tag <em>has no opinion</em> on selection state
+            (note that this is not the same as select tag deeming the option should not be selected)
+            then the presence of the selected attribute (or lack thereof) is used to turn selection
+            on or off.</p>
+
+            <p>If the option has a body then the String value of that body will be used to generate
+            the body of the generated HTML option.  If the body is empty or not present then the
+            label attribute will be written into the body of the tag.</p>
+        ]]></description>
+        <display-name>option</display-name>
+        <name>option</name>
+        <tag-class>net.sourceforge.stripes.tag.InputOptionTag</tag-class>
+        <body-content>JSP</body-content>
+
+        <attribute>
+            <description>
+                The value that will be submitted to the server if this option is selected. Will be
+                rendered as a String using the Stripes Formatting service, which will apply a
+                formatter if an applicable one is found, or call toString() if one is not.
+            </description>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <type>java.lang.Object</type>
+        </attribute>
+        <attribute>
+            <description>A value to use as the body of the generated HTML label tag.</description>
+            <name>label</name><required>false</required><rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <description>
+                If present, and the parent select tag had no value= attribute, causes
+                the option to be selected by default.  The value is ignored, only presence in meaningful.
+            </description>
+            <name>selected</name><required>false</required><rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute><description>Disables the input element when it first loads so that the user can not write text in it, or select it. (HTML Pass-through)</description><name>disabled</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>The type used to format the object. If the value is a date, valid values are 'date', 'time' and 'datetime'. If the value is a Number, valid values are 'number', 'percentage' and 'currency'.</description><name>formatType</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>The pattern to apply. Can be either a named pattern or an actual pattern as understood by java.text.DateFormat or java.text.NumberFormat as appropriate for the type of object being formatted.</description><name>formatPattern</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+
+        <!-- Start: Standard HTML attributes -->
+        <attribute><description>Keyboard shortcut to access the element. (HTML Pass-through)</description><name>accesskey</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>The CSS class to be applied to the element. (HTML Pass-through)</description><name>class</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Text direction. (HTML Pass-through)</description><name>dir</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>A unique identifier for the HTML tag on the pgae. (HTML Pass-through)</description><name>id</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>The language code of the element. (HTML Pass-through)</description><name>lang</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the element loses focus. (HTML Pass-through)</description><name>onblur</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the element changes. (HTML Pass-through)</description><name>onchange</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run on each mouse click. (HTML Pass-through)</description><name>onclick</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run on a double-click of the mouse. (HTML Pass-through)</description><name>ondblclick</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the element acquires focus. (HTML Pass-through)</description><name>onfocus</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a key is depressed. (HTML Pass-through)</description><name>onkeydown</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a key is pressed and released. (HTML Pass-through)</description><name>onkeypress</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a key is released. (HTML Pass-through)</description><name>onkeyup</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a mouse button is depressed. (HTML Pass-through)</description><name>onmousedown</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the mouse pointer is moved. (HTML Pass-through)</description><name>onmousemove</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the mouse pointer moves out of the element. (HTML Pass-through)</description><name>onmouseout</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when the mouse pointer moves over the element. (HTML Pass-through)</description><name>onmouseover</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when a mouse button is released. (HTML Pass-through)</description><name>onmouseup</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Scripting code run when an element is selected. (HTML Pass-through)</description><name>onselect</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Inline CSS style fragment that applies to the element (HTML Pass-through)</description><name>style</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>The tab order of the element. (HTML Pass-through)</description><name>tabindex</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <attribute><description>Tool-tip text for the element. (HTML Pass-through)</description><name>title</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute>
+        <!-- End: Standard HTML attributes -->
+    </tag>
+
+    <tag>
+        <description><![CDATA[
+            <p>Writes a set of &lt;option value=&quot;foo&quot;&gt;bar&lt;/option&gt; tags to the
+            page based on the contents of a Collection.  Each element in the collection is
+            represented by a single option tag on the page.  Uses the label and value attributes
+            on the tag to name the properties of the objects in the Collection that should be used
+            to generate the body of the HTML option tag and the value attribute of the HTML option
+            tag respectively.  If either (or both) of the label or value properties are ommitted
+            the item itself will be used for the label/value instead - this is done to support
+            collections of simple types like Strings and Numbers.</p>
+
+            <p>E.g. a tag declaration that looks like:</p>
+            <pre>&lt;stripes:options-collection collection=&quot;${cats}&quot; value=&quot;catId&quot; label=&quot;name&quot;/&gt;</pre>
+
+            <p>would cause the container to look for a Collection called &quot;cats&quot; across
+            the various JSP scopes and set it on the tag.  The tag would then proceed to iterate
+            through that collection calling getCatId() and getName() on each cat to produce
+            HTML option tags.</p>
+
+            <p>The tag will attempt to localize the labels attributes of the option tags that are
+            generated. To do this it will look up labels in the field resource bundle using:</p>
+
+            <ul>
+              <li>{className}.{labelPropertyValue}</li>
+              <li>{packageName}.{className}.{labelPropertyValue}</li>
+              <li>{className}.{valuePropertyValue}</li>
+              <li>{packageName}.{className}.{valuePropertyValue}</li>
+            </ul>
+
+            <p>For example for a class com.myco.Gender supplied to the options-collection tag with
+            label="key" and value="description", when rendering for an instance
+            Gender[key="M", description="Male"] the following localized properites will be looked for:
+
+            <ul>
+              <li>Gender.Male</li>
+              <li>com.myco.Gender.Male</li>
+              <li>Gender.M</li>
+              <li>com.myco.Gender.M</li>
+            </ul>
+

[... 887 lines stripped ...]