<?xml version="1.0"?>
<document url="struts-html.html" authors="false">

<properties>
  <author>Craig R. McClanahan</author>
  <author>Martin Cooper</author>
  <author>Mike Schachter</author>
  <author>James Turner</author>
  <author>David Graham</author>
  <title>The Struts Framework Project - HTML Tags</title>
</properties>

<body>


<taglib>

  <tlibversion>1.2</tlibversion>
  <jspversion>1.1</jspversion>
  <shortname>html</shortname>
  <display-name>Page Construction Tags</display-name>
  <uri>http://struts.apache.org/tags-html</uri>
  <info>
  <p>
        This taglib contains tags used to create struts
        input forms, as well as other tags generally useful
                in the creation of HTML-based user interfaces.
  </p>

  <p>Many of the tags in this tag library will throw a
  <code>JspException</code> at runtime when they are utilized incorrectly
  (such as when you specify an invalid combination of tag attributes).  JSP
  allows you to declare an "error page" in the <code>&lt;%@ page %&gt;</code>
  directive.  If you wish to process the actual exception that caused the
  problem, it is passed to the error page as a request attribute under key
  <code>org.apache.struts.action.EXCEPTION</code>.</p>

  </info>

        <tag>
          <name>base</name>
          <summary>Render an HTML &lt;base&gt; Element</summary>
          <tagclass>org.apache.struts.taglib.html.BaseTag</tagclass>
          <bodycontent>empty</bodycontent>
          <info>
          <p>Renders an HTML <code>&lt;base&gt;</code> element with an
          <code>href</code> attribute pointing to the absolute location of
          the enclosing JSP page.  This tag is valid only when nested inside
          an HTML <code>&lt;head&gt;</code> element.</p>

          <p>This tag is useful because it allows you to use relative URL
          references in the page that are calculated based on the URL of the
          page itself, rather than the URL to which the most recent submit
          took place (which is where the browser would normally resolve
          relative references against).</p>
          </info>

          <attribute>
            <name>target</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
              <p>The window target for this base reference.</p>
            </info>
          </attribute>
          <attribute>
            <name>server</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
              <p>The server name to use instead of request.getServerName().</p>
            </info>
          </attribute>

        </tag>

    <tag>

        <name>button</name>
        <summary>
            Render A Button Input Field
        </summary>
        <tagclass>org.apache.struts.taglib.html.ButtonTag</tagclass>
        <info>
            <p>
                Renders an HTML &lt;input&gt; element of type
                <code>button</code>, populated from the specified value or the
                content of this tag body. This tag is only valid when nested
                inside a form tag body.
            </p>
            <p>
             If a graphical button is needed (a button with an image), then the
             <a href="#image"><code>image</code></a> tag is more appropriate.
            </p>
        </info>

        <attribute>
            <name>accesskey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The keyboard character used to move focus immediately to this
                element.
            </info>
        </attribute>

        <attribute>
                <name>alt</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The alternate text for this element.</p>
                </info>
        </attribute>

        <attribute>
                <name>altKey</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The message resources key of the alternate text for this
                element.</p>
                </info>
        </attribute>

        <attribute>
          <name>disabled</name>
          <required>false</required>
          <rtexprvalue>true</rtexprvalue>
          <info>
          Set to <code>true</code> if this input field should be
          disabled.
          </info>
        </attribute>

        <attribute>
            <name>indexed</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Valid only inside of <code>logic:iterate</code> tag.
                If <code>true</code> then name of the html tag will be rendered as
                "propertyName[34]". Number in brackets will be generated for
                every iteration and taken from ancestor logic:iterate tag.
            </info>
        </attribute>

        <attribute>
            <name>onblur</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element loses input
                focus.
            </info>
        </attribute>

        <attribute>
            <name>onchange</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element loses input
                focus and its value has changed.
            </info>
        </attribute>

        <attribute>
            <name>onclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives a
                mouse click.
            </info>
        </attribute>


        <attribute>
            <name>ondblclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives a
                mouse double click.
            </info>
        </attribute>

        <attribute>
            <name>onfocus</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives input
                focus.
            </info>
        </attribute>


        <attribute>
            <name>onkeydown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is depressed.
            </info>
        </attribute>

        <attribute>
            <name>onkeypress</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is depressed and released.
            </info>
        </attribute>

        <attribute>
            <name>onkeyup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is released.
            </info>
        </attribute>

        <attribute>
            <name>onmousedown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the mouse
                pointer and a mouse button is depressed.
            </info>
        </attribute>

        <attribute>
            <name>onmousemove</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the
                mouse pointer and the pointer is moved.
            </info>
        </attribute>

        <attribute>
            <name>onmouseout</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element was under the
                mouse pointer but the pointer was moved outside the element.
            </info>
        </attribute>

        <attribute>
            <name>onmouseover</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element was not under
                the mouse pointer but the pointer is moved inside the element.
            </info>
        </attribute>

        <attribute>
            <name>onmouseup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the
                mouse pointer and a mouse button is released.
            </info>
        </attribute>

        <attribute>
            <name>property</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Name of the request parameter that will be included with this
                submission, set to the specified value.
            </info>
        </attribute>

        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS styles to be applied to this HTML element.
            </info>
        </attribute>

        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).
            </info>
        </attribute>

        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Identifier to be assigned to this HTML element (renders
                an "id" attribute).
            </info>
        </attribute>

        <attribute>
            <name>tabindex</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The tab order (ascending positive integers) for this element.
            </info>
        </attribute>

                <attribute>
                  <name>title</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The advisory title for this element.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>titleKey</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The message resources key for the advisory title
                  for this element.</p>
                  </info>
                </attribute>

        <attribute>
            <name>value</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Value of the label to be placed on this button. This value will
                also be submitted as the value of the specified request parameter.
                [Body of this tag (if any), or "Click"]
            </info>
        </attribute>
    </tag>

    <tag>

        <name>cancel</name>
        <summary>
            Render a Cancel Button
        </summary>
        <tagclass>org.apache.struts.taglib.html.CancelTag</tagclass>
        <info>
            <p>
                Renders an HTML &lt;input&gt; element of type submit. This tag is only
                valid when nested inside a form tag body. Pressing of this submit
                button causes the action servlet to bypass calling the associated
                form bean validate() method. The action is called normally.
            </p>
        </info>

        <attribute>
            <name>accesskey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The keyboard character used to move focus immediately to this
                element.
            </info>
        </attribute>

        <attribute>
                <name>alt</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The alternate text for this element.</p>
                </info>
        </attribute>

        <attribute>
                <name>altKey</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The message resources key of the alternate text for this
                element.</p>
                </info>
        </attribute>

        <attribute>
          <name>disabled</name>
          <required>false</required>
          <rtexprvalue>true</rtexprvalue>
          <info>
          Set to <code>true</code> if this input field should be
          disabled.
          </info>
        </attribute>

        <attribute>
            <name>onblur</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element loses input
                focus.
            </info>
        </attribute>

        <attribute>
            <name>onchange</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element loses input
                focus and its value has changed.
            </info>
        </attribute>

        <attribute>
            <name>onclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives a
                mouse click.
            </info>
        </attribute>


        <attribute>
            <name>ondblclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives a
                mouse double click.
            </info>
        </attribute>

        <attribute>
            <name>onfocus</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives input
                focus.
            </info>
        </attribute>


        <attribute>
            <name>onkeydown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is depressed.
            </info>
        </attribute>

        <attribute>
            <name>onkeypress</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is depressed and released.
            </info>
        </attribute>

        <attribute>
            <name>onkeyup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is released.
            </info>
        </attribute>

        <attribute>
            <name>onmousedown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the mouse
                pointer and a mouse button is depressed.
            </info>
        </attribute>

        <attribute>
            <name>onmousemove</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the
                mouse pointer and the pointer is moved.
            </info>
        </attribute>

        <attribute>
            <name>onmouseout</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element was under the
                mouse pointer but the pointer was moved outside the element.
            </info>
        </attribute>

        <attribute>
            <name>onmouseover</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element was not under
                the mouse pointer but the pointer is moved inside the element.
            </info>
        </attribute>

        <attribute>
            <name>onmouseup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the
                mouse pointer and a mouse button is released.
            </info>
        </attribute>

        <attribute>
            <name>property</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Name of the request parameter that will be included with this
                submission, set to the specified value.
                <strong>WARNING</strong> - If you set this attribute to a
                value other than the default, this will <em>NOT</em> be
                recognized as the cancel key by the Struts controller servlet
                or the <code>Action.isCancelled()</code> method.  You will
                need to do your own cancel detection.
            </info>
        </attribute>

        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS styles to be applied to this HTML element.
            </info>
        </attribute>

        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).
            </info>
        </attribute>

        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Identifier to be assigned to this HTML element (renders
                an "id" attribute).
            </info>
        </attribute>

        <attribute>
            <name>tabindex</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The tab order (ascending positive integers) for this element.
            </info>
        </attribute>

                <attribute>
                  <name>title</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The advisory title for this element.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>titleKey</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The message resources key for the advisory title
                  for this element.</p>
                  </info>
                </attribute>

        <attribute>
            <name>value</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Value of the label to be placed on this button. This value will
                also be submitted as the value of the specified request parameter.
                [Body of this tag (if any), or "Cancel"]
            </info>
        </attribute>
    </tag>


    <tag>

        <name>checkbox</name>
        <summary>
            Render A Checkbox Input Field
        </summary>
        <tagclass>org.apache.struts.taglib.html.CheckboxTag</tagclass>
        <info>
            <p>Renders an HTML &lt;input&gt; element of type
                        <code>checkbox</code>, populated from the specified
                        value or the specified property of the bean associated
                        with our current form. This tag is only valid when
                        nested inside a form tag body.</p>

            <p><strong>NOTE</strong>:  The underlying property value
            associated with this field should be of type <code>boolean</code>,
            and any <code>value</code> you specify should correspond to one
            of the Strings that indicate a true value ("true", "yes", or
            "on").  If you wish to utilize a set of related String values,
            consider using the <code>multibox</code> tag.</p>

                        <p><strong>WARNING</strong>:  In order to correctly
                        recognize unchecked checkboxes, the
                        <code>ActionForm</code> bean associated with this form
                        must include a statement setting the corresponding
                        boolean property to <code>false</code> in the
                        <code>reset()</code> method.</p>
        </info>

        <attribute>
            <name>accesskey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The keyboard character used to move focus immediately to this
                element.
            </info>
        </attribute>

        <attribute>
                <name>alt</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The alternate text for this element.</p>
                </info>
        </attribute>

        <attribute>
                <name>altKey</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The message resources key of the alternate text for this
                element.</p>
                </info>
        </attribute>

        <attribute>
          <name>disabled</name>
          <required>false</required>
          <rtexprvalue>true</rtexprvalue>
          <info>
          Set to <code>true</code> if this input field should be
          disabled.
          </info>
        </attribute>

        <attribute>
            <name>indexed</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Valid only inside of <code>logic:iterate</code> tag.
                If <code>true</code> then name of the html tag will be rendered as
                "id[34].propertyName". Number in brackets will be generated
                for every iteration and taken from ancestor logic:iterate tag.
            </info>
        </attribute>

        <attribute>
            <name>name</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The attribute name of the bean whose properties are consulted when
                rendering the current value of this input field. If not specified,
                the bean associated with the form tag we are nested within is utilized.
            </info>
        </attribute>

        <attribute>
            <name>onblur</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element loses input
                focus.
            </info>
        </attribute>

        <attribute>
            <name>onchange</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element loses input
                focus and its value has changed.
            </info>
        </attribute>

        <attribute>
            <name>onclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives a
                mouse click.
            </info>
        </attribute>


        <attribute>
            <name>ondblclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives a
                mouse double click.
            </info>
        </attribute>

        <attribute>
            <name>onfocus</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives input
                focus.
            </info>
        </attribute>


        <attribute>
            <name>onkeydown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is depressed.
            </info>
        </attribute>

        <attribute>
            <name>onkeypress</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is depressed and released.
            </info>
        </attribute>

        <attribute>
            <name>onkeyup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is released.
            </info>
        </attribute>

        <attribute>
            <name>onmousedown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the mouse
                pointer and a mouse button is depressed.
            </info>
        </attribute>

        <attribute>
            <name>onmousemove</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the
                mouse pointer and the pointer is moved.
            </info>
        </attribute>

        <attribute>
            <name>onmouseout</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element was under the
                mouse pointer but the pointer was moved outside the element.
            </info>
        </attribute>

        <attribute>
            <name>onmouseover</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element was not under
                the mouse pointer but the pointer is moved inside the element.
            </info>
        </attribute>

        <attribute>
            <name>onmouseup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the
                mouse pointer and a mouse button is released.
            </info>
        </attribute>

        <attribute>
            <name>property</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Name of the request parameter that will be included with this
                submission, set to the specified value.
            </info>
        </attribute>

        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS styles to be applied to this HTML element.
            </info>
        </attribute>

        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).
            </info>
        </attribute>

        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Identifier to be assigned to this HTML element (renders
                an "id" attribute).
            </info>
        </attribute>

        <attribute>
            <name>tabindex</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The tab order (ascending positive integers) for this element.
            </info>
        </attribute>

                <attribute>
                  <name>title</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The advisory title for this element.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>titleKey</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The message resources key for the advisory title
                  for this element.</p>
                  </info>
                </attribute>

        <attribute>
            <name>value</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                        The value to be transmitted if this checkbox is
                        checked when the form is submitted.  If not specified,
                        the value "on" will be returned.
            </info>
        </attribute>
    </tag>

        <tag>
                <name>errors</name>
                <summary>
                Conditionally display a set of accumulated error messages.
                </summary>
                <tagclass>org.apache.struts.taglib.html.ErrorsTag</tagclass>
                <bodycontent>empty</bodycontent>
                <info>
                <p>Displays a set of error messages prepared by a business
                logic component and stored as an <code>ActionErrors</code>
                object, a String, or a String array in request scope.  If
                such a bean is not found, nothing will be rendered.</p>

                <p>In order to use this tag successfully, you must have
                defined an application scope <code>MessageResources</code>
                bean under the default attribute name, with optional
                definitions of the following message keys:</p>
                <ul>
                <li><strong>errors.header</strong> - Text that will be rendered
                before the error messages list.  Typically, this message text
                will end with <code>&lt;ul&gt;</code> to start the
                error messages list.</li>
                <li><strong>errors.footer</strong> - Text that will be rendered
                after the error messages list.  Typically, this message text
                will begin with <code>&lt;/ul&gt;</code> to end the error
                messages list.</li>
                <li><strong>errors.prefix</strong> - Text that will be rendered
                before each individual error in the list.</li>
                <li><strong>errors.suffix</strong> - Text that will be rendered
                after each individual error in the list.</li>
                </ul>
                </info>

                <attribute>
                    <name>bundle</name>
                    <required>false</required>
                    <rtexprvalue>true</rtexprvalue>
                    <info>
                    The servlet context attribute key for the MessageResources
                    instance to use.  If not specified, defaults to the
                    application resources configured for our action servlet.
                    </info>
                </attribute>

                <attribute>
                    <name>locale</name>
                    <required>false</required>
                    <rtexprvalue>true</rtexprvalue>
                    <info>
                    The session attribute key for the Locale used to select
                    messages to be displayed.  If not specified, defaults to
                    the Struts standard value.
                    </info>
                </attribute>

                <attribute>
                  <name>name</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  Name of the request scope bean under which our error messages
                  have been stored.  If not present, the name specified by the
                  <code>Globals.ERROR_KEY</code> constant string will be used.
                  </info>
                </attribute>

                <attribute>
                  <name>property</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  Name of the property for which error messages should be
                  displayed.  If not specified, all error messages (regardless
                  of property) are displayed.
                  </info>
                </attribute>

        </tag>

    <tag>

        <name>file</name>
        <summary>
            Render A File Select Input Field
        </summary>
        <tagclass>org.apache.struts.taglib.html.FileTag</tagclass>
        <info>
            <p>
                Renders an HTML &lt;input&gt; element of type file, defaulting to
                the specified value or the specified property of the bean
                associated with our current form. This tag is only valid when
                nested inside a form tag body.
            </p>
            <p>
                As with the corresponding HTML &lt;input&gt; element, the
                enclosing form element must specify "POST" for the <code>method</code>
                attribute, and "multipart/form-data" for the <code>enctype</code>
                attribute. For example:
            </p>
    <pre>
    &lt;html:form method="POST" enctype="multipart/form-data"&gt;
        &lt;html:file property="theFile" /&gt;
    &lt;/html:form&gt;</pre>
        </info>

        <attribute>
            <name>accesskey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The keyboard character used to move focus immediately to this
                element.
            </info>
        </attribute>

        <attribute>
            <name>accept</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Comma-delimited set of content types that the server you submit to
                knows how to process. This list can be used by the client browser
                to limit the set of file options that is made available for selection.
                If not specified, no content type list will be sent.
            </info>
        </attribute>

        <attribute>
                <name>alt</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The alternate text for this element.</p>
                </info>
        </attribute>

        <attribute>
                <name>altKey</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The message resources key of the alternate text for this
                element.</p>
                </info>
        </attribute>

        <attribute>
          <name>disabled</name>
          <required>false</required>
          <rtexprvalue>true</rtexprvalue>
          <info>
          Set to <code>true</code> if this input field should be
          disabled.
          </info>
        </attribute>

        <attribute>
            <name>indexed</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Valid only inside of <code>logic:iterate</code> tag.
                If <code>true</code> then name of the html tag will be rendered as
                "id[34].propertyName". Number in brackets will be generated
                for every iteration and taken from ancestor logic:iterate tag.
            </info>
        </attribute>

        <attribute>
            <name>maxlength</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Maximum number of input characters to accept.  This is ignored
                by most browsers. [No limit]
            </info>
        </attribute>

        <attribute>
            <name>name</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The attribute name of the bean whose properties are consulted when
                rendering the current value of this input field. If not specified,
                the bean associated with the form tag we are nested within is utilized.
            </info>
        </attribute>

        <attribute>
            <name>onblur</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element loses input
                focus.
            </info>
        </attribute>

        <attribute>
            <name>onchange</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element loses input
                focus and its value has changed.
            </info>
        </attribute>

        <attribute>
            <name>onclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives a
                mouse click.
            </info>
        </attribute>


        <attribute>
            <name>ondblclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives a
                mouse double click.
            </info>
        </attribute>

        <attribute>
            <name>onfocus</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives input
                focus.
            </info>
        </attribute>


        <attribute>
            <name>onkeydown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is depressed.
            </info>
        </attribute>

        <attribute>
            <name>onkeypress</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is depressed and released.
            </info>
        </attribute>

        <attribute>
            <name>onkeyup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is released.
            </info>
        </attribute>

        <attribute>
            <name>onmousedown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the mouse
                pointer and a mouse button is depressed.
            </info>
        </attribute>

        <attribute>
            <name>onmousemove</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the
                mouse pointer and the pointer is moved.
            </info>
        </attribute>

        <attribute>
            <name>onmouseout</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element was under the
                mouse pointer but the pointer was moved outside the element.
            </info>
        </attribute>

        <attribute>
            <name>onmouseover</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element was not under
                the mouse pointer but the pointer is moved inside the element.
            </info>
        </attribute>

        <attribute>
            <name>onmouseup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the
                mouse pointer and a mouse button is released.
            </info>
        </attribute>

        <attribute>
            <name>property</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Name of the request parameter that will be included with this
                submission, set to the specified value.
            </info>
        </attribute>

        <attribute>
            <name>size</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Size of the file selection box to be displayed.
            </info>
        </attribute>

        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS styles to be applied to this HTML element.
            </info>
        </attribute>

        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).
            </info>
        </attribute>

        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Identifier to be assigned to this HTML element (renders
                an "id" attribute).
            </info>
        </attribute>

        <attribute>
            <name>tabindex</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The tab order (ascending positive integers) for this element.
            </info>
        </attribute>

        <attribute>
            <name>title</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
            <p>The advisory title for this element.</p>
            </info>
        </attribute>

        <attribute>
            <name>titleKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
            <p>The message resources key for the advisory title
            for this element.</p>
            </info>
        </attribute>

        <attribute>
            <name>value</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
            <p>
                <strong>NOTE</strong>: When setting this to some value, whether
                intentional or as the result (for example) of validation errors 
                forcing the user back to the original jsp, this value is ignored 
                by most browsers (for security reasons).
                This means that your users will have to re-select any previously
                selected files when submitting the form.  Opera web browser will
                prompt the user so they have a chance to abort the submit.
            </p>
                Value to which this field should be initialized. [Use the
                corresponding bean property value or body content (if any) if 
                property is not specified]
            </info>
        </attribute>
    </tag>

    <tag>

        <name>form</name>
        <summary>
            Define An Input Form
        </summary>
        <tagclass>org.apache.struts.taglib.html.FormTag</tagclass>
        <bodycontent>JSP</bodycontent>
        <info>
            <p>
                Renders an HTML &lt;form&gt; element whose contents are described
                by the body content of this tag. The form implicitly interacts
                with the specified request scope or session scope bean to populate
                the input fields with the current property values from the bean.
            </p>
            <p>
                The form bean is located, and created if necessary, based on the 
                form bean specification for the associated <code>ActionMapping</code>.
            </p>
        </info>

        <attribute>
            <name>action</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                        <p>The URL to which this form will be submitted.  This
                        value is also used to select the ActionMapping we are
                        assumed to be processing, from which we can identify
                        the appropriate form bean and scope.</p>

                        <p>If you are using extension mapping for selecting the
                        controller servlet, this value should be equal to the
                        <code>path</code> attribute of the corresponding
                        <code>&lt;action&gt;</code> element, optionally
                        followed by the correct extension suffix.</p>

                        <p>If you are using path mapping to select the
                        controller servlet, this value should be exactly equal
                        to the <code>path</code> attribute of the corresponding
                        <code>&lt;action&gt;</code> element.</p>
                        </info>
        </attribute>

        <attribute>
            <name>acceptCharset</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The list of character encodings for input data that the server should
                accept.
            </info>
            <since>Struts 1.2.2</since>
        </attribute>

        <attribute>
            <name>enctype</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The content encoding to be used to submit this form, if the method
                is POST. This must be set to "multipart/form-data" if you are using
                the file tag to enable file upload. If not specified, the browser
                default (normally "application/x-www-form-urlencoded") is used.
            </info>
        </attribute>

        <attribute>
            <name>focus</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The field name (among the fields on this form) to which initial
                focus will be assigned with a JavaScript function. If not specified,
                no special JavaScript for this purpose will be rendered.
            </info>
        </attribute>

        <attribute>
            <name>focusIndex</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                If the focus field is a field array, such as a radio button group, you can 
                specify the index in the array to receive focus.
            </info>
            <since>Struts 1.1</since>
        </attribute>

        <attribute>
            <name>method</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The HTTP method that will be used to submit this request
                (GET, POST). [POST]
            </info>
        </attribute>

        <attribute>
            <name>onreset</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed if the form is reset.
            </info>
        </attribute>

        <attribute>
            <name>onsubmit</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed if the form is submitted.
            </info>
        </attribute>

		<attribute>
            <name>scriptLanguage</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The form's focus &lt;script&gt; element will not contain a language attribute
                when this is set to false.  The default is true but this property is ignored
                in XHMTL mode.
            </info>
            <since>Struts 1.2</since>
        </attribute>
        
        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS styles to be applied to this HTML element.
            </info>
        </attribute>

        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).
            </info>
        </attribute>

        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Identifier to be assigned to this HTML element (renders
                an "id" attribute).
            </info>
        </attribute>

        <attribute>
            <name>target</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Window target to which this form is submitted, such as
                for use in framed presentations.
            </info>
        </attribute>

    </tag>

    <tag>

        <name>frame</name>
        <summary>Render an HTML frame element</summary>
        <tagclass>org.apache.struts.taglib.html.FrameTag</tagclass>
        <info>

            <p>Renders an HTML <code>&lt;frame&gt;</code> element
            with processing for the <code>src</code> attribute that is
            identical to that performed by the <code>&lt;html:link&gt;</code>
            tag for the <code>href</code> attribute.  URL rewriting will be
            applied automatically, to maintain session state in the
            absence of cookies.</p>

            <p>The base URL for this frame is calculated based on
            which of the following attributes you specify (you must
            specify exactly one of them):</p>
            <ul>
            <li><em>forward</em> - Use the value of this attribute as the
                name of a global <code>ActionForward</code> to be looked
                up, and use the module-relative or context-relative
                URI found there.</li>
            <li><em>href</em> - Use the value of this attribute unchanged.
                </li>
            <li><em>page</em> - Use the value of this attribute as a
                module-relative URI, and generate a server-relative
                URI by including the context path and application
                prefix.</li>
            <li><em>action</em> - Use the value of this attribute as the
                logical name of a global Action that contains the actual 
                content-relative URI of the destination of this transfer.</li>
            </ul>

            <p>Normally, the hyperlink you specify with one of the
            attributes described in the previous paragraph will be left
            unchanged (other than URL rewriting if necessary).  However,
            there are two ways you can append one or more dynamically
            defined query parameters to the hyperlink -- specify a single
            parameter with the <code>paramId</code> attribute (and its
            associated attributes to select the value), or specify the
            <code>name</code> (and optional <code>property</code>)
            attributes to select a <code>java.util.Map</code> bean that
            contains one or more parameter ids and corresponding values.
            </p>

            <p>To specify a single parameter, use the <code>paramId</code>
            attribute to define the name of the request parameter to be
            submitted.  To specify the corresponding value, use one of the
            following approaches:</p>
            <ul>
            <li><em>Specify only the <code>paramName</code> attribute</em>
                - The named JSP bean (optionally scoped by the value of the
                <code>paramScope</code> attribute) must identify a value
                that can be converted to a String.</li>
            <li><em>Specify both the <code>paramName</code> and
                <code>paramProperty</code> attributes</em> - The specified
                property getter method will be called on the JSP bean
                identified by the <code>paramName</code> (and optional
                <code>paramScope</code>) attributes, in order to select
                a value that can be converted to a String.</li>
            </ul>

            <p>If you prefer to specify a <code>java.util.Map</code> that
            contains all of the request parameters to be added to the
            hyperlink, use one of the following techniques:</p>
            <ul>
            <li><em>Specify only the <code>name</code> attribute</em> -
                The named JSP bean (optionally scoped by the value of
                the <code>scope</code> attribute) must identify a
                <code>java.util.Map</code> containing the parameters.</li>
            <li><em>Specify both <code>name</code> and
                <code>property</code> attributes</em> - The specified
                property getter method will be called on the bean
                identified by the <code>name</code> (and optional
                <code>scope</code>) attributes, in order to return the
                <code>java.util.Map</code> containing the parameters.</li>
            </ul>

            <p>As the <code>Map</code> is processed, the keys are assumed
            to be the names of query parameters to be appended to the
            hyperlink.  The value associated with each key must be either
            a String or a String array representing the parameter value(s),
            or an object whose toString() method will be called.
            If a String array is specified, more than one value for the
            same query parameter name will be created.</p>

            <p>Additionally, you can request that the current transaction
            control token, if any, be included in the generated hyperlink
            by setting the <code>transaction</code> attribute to
            <code>true</code>.
            You can also request that an anchor ("#xxx") be added to the
            end of the URL that is created by any of the above mechanisms,
            by using the <code>anchor</code> attribute.</p>

         </info>
 
         <attribute>
           <name>action</name>
           <required>false</required>
           <rtexprvalue>true</rtexprvalue>
           <info>
               <p>Logical name of a global <code>Action</code> that
               contains the actual content-relative URI of the destination
               of this transfer.  This hyperlink may be dynamically
               modified by the inclusion of query parameters, as described
               in the tag description.  You <strong>must</strong> specify
               exactly one of the <code>action</code> attribute, the
               <code>forward</code> attribute, the
               <code>href</code> attribute,
               or the <code>page</code> attribute.</p>
               
		       <p>Additionally, you can specify a <code>module</code> prefix 
			   for linking to other modules.</p>
						   
		   </info>
         </attribute>
                
         <attribute>
		   <name>module</name>
		   <required>false</required>
		   <rtexprvalue>true</rtexprvalue>
		   <info>
			   <p>Prefix name of a <code>Module</code> that
		       contains the action mapping for the <code>Action</code>
		       that is specified by the <code>action</code> attribute.
		       You <strong>must</strong> specify an <code>action</code> 
		       attribute for this to have an effect.</p>
		
		       <p><strong>Note: </strong>Use "" to map to the default module.</p>
		  </info>
         </attribute>

          <attribute>
            <name>anchor</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                <p>Optional anchor tag ("#xxx") to be added to the generated
                hyperlink.  Specify this value <strong>without</strong> any
                "#" character.</p>
            </info>
        </attribute>

        <attribute>
            <name>forward</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                <p>Logical name of a global <code>ActionForward</code> that
                contains the actual content-relative URI of the destination
                of this transfer.  This hyperlink may be dynamically
                modified by the inclusion of query parameters, as described
                in the tag description.  You <strong>must</strong> specify
                exactly one of the <code>action</code> attribute, the
                <code>forward</code> attribute, the
                <code>href</code> attribute,
                or the <code>page</code> attribute.</p>
             </info>
        </attribute>

        <attribute>
            <name>frameborder</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                <p>Should a frame border be generated around this frame (1)
                or not (0)?</p>
            </info>
        </attribute>

        <attribute>
            <name>frameName</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                <p>Value for the <code>name</code> attribute of the rendered
                <code>&lt;frame&gt;</code> element.</p>
            </info>
        </attribute>

        <attribute>
            <name>href</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                <p>The URL to which this hyperlink will transfer control
                 if activated.  This hyperlink may be dynamically modified
                 by the inclusion of query parameters, as described in the
                 tag description.  You <strong>must</strong> specify
                 exactly one of the <code>action</code> attribute, the
                 <code>forward</code> attribute, the
                 <code>href</code> attribute,
                 or the <code>page</code> attribute.</p>
             </info>
        </attribute>

        <attribute>
            <name>longdesc</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                <p>URI of a long description of the frame.  This description
                should supplement the short description provided by the
                <code>title</code> attribute, and may be particularly useful
                for non-visual user agents.</p>
            </info>
        </attribute>

        <attribute>
            <name>marginheight</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                <p>The amount of space (in pixels) to be left between the
                frame's contents and its top and bottom margins.</p>
            </info>
        </attribute>

        <attribute>
            <name>marginwidth</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                <p>The amount of space (in pixels) to be left between the
                frame's contents and its left and right margins.</p>
            </info>
        </attribute>

        <attribute>
            <name>name</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                <p>The name of a JSP bean that contains a <code>Map</code>
                representing the query parameters (if <code>property</code>
                is not specified), or a JSP bean whose property getter is
                called to return a <code>Map</code> (if <code>property</code>
                is specified).</p>
            </info>
        </attribute>

        <attribute>
            <name>noresize</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                <p>Should users be disallowed from resizing the frame?
                (true, false).</p>
            </info>
        </attribute>

        <attribute>
            <name>page</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                <p>The module-relative path (beginning with a "/"
                character) to which this hyperlink will transfer control
                 if activated.  This hyperlink may be dynamically modified
                 by the inclusion of query parameters, as described in the
                 tag description.  You <strong>must</strong> specify exactly
                 one of the <code>action</code> attribute, the
                 <code>forward</code> attribute, the
                 <code>href</code> attribute,
                 or the <code>page</code> attribute.</p>
                 </info>
            </attribute>

        <attribute>
            <name>paramId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                <p>The name of the request parameter that will be dynamically
                added to the generated hyperlink.  The corresponding value is
                defined by the <code>paramName</code> and (optional)
                <code>paramProperty</code> attributes, optionally scoped by
                the <code>paramScope</code> attribute</p>
            </info>
        </attribute>

        <attribute>
            <name>paramName</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                <p>The name of a JSP bean that is a String containing the
                value for the request parameter named by <code>paramId</code>
                (if <code>paramProperty</code> is not specified), or a JSP
                bean whose property getter is called to return a String
                (if <code>paramProperty</code> is specified).  The JSP bean
                is constrained to the bean scope specified by the
                <code>paramScope</code> property, if it is specified.</p>
            </info>
        </attribute>

        <attribute>
            <name>paramProperty</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                <p>The name of a property of the bean specified by the
                <code>paramName</code> attribute, whose return value must
                be a String containing the value of the request parameter
                (named by the <code>paramId</code> attribute) that will be
                dynamically added to this hyperlink.</p>
            </info>
        </attribute>

        <attribute>
            <name>paramScope</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                <p>The scope within which to search for the bean specified
                by the <code>paramName</code> attribute.  If not specified,
                all scopes are searched.</p>
            </info>
        </attribute>

        <attribute>
            <name>property</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                <p>The name of a property of the bean specified by the
                <code>name</code> attribute, whose return value must be
                a <code>java.util.Map</code> containing the query parameters
                to be added to the hyperlink.  You <strong>must</strong>
                specify the <code>name</code> attribute if you specify
                this attribute.</p>
            </info>
        </attribute>

        <attribute>
            <name>scope</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                <p>The scope within which to search for the bean specified
                by the <code>name</code> attribute.  If not specified, all
                scopes are searched.</p>
            </info>
        </attribute>

        <attribute>
            <name>scrolling</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                <p>Should scroll bars be created unconditionally (yes),
                never (no), or only when needed (auto)?</p>
            </info>
        </attribute>

        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                <p>CSS styles to be applied to this element.</p>
            </info>
        </attribute>

        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).
            </info>
        </attribute>

        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Identifier to be assigned to this HTML element (renders
                an "id" attribute).
            </info>
        </attribute>

        <attribute>
            <name>title</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                <p>The advisory title for this element.</p>
            </info>
        </attribute>

        <attribute>
            <name>titleKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                <p>The message resources key for the advisory title
                for this element.</p>
            </info>
        </attribute>

        <attribute>
            <name>transaction</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                <p>If set to <code>true</code>, any current transaction
                control token will be included in the generated hyperlink,
                so that it will pass an <code>isTokenValid()</code> test
                in the receiving Action.</p>
            </info>
        </attribute>

    </tag>


    <tag>

        <name>hidden</name>
        <summary>
            Render A Hidden Field
        </summary>
        <tagclass>org.apache.struts.taglib.html.HiddenTag</tagclass>
        <bodycontent>empty</bodycontent>
        <info>
            <p>
                Renders an HTML &lt;input&gt; element of type hidden, populated
                from the specified value or the specified property of the bean
                associated with our current form. This tag is only valid when
                nested inside a form tag body.
            </p>
        </info>

        <attribute>
            <name>accesskey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The keyboard character used to move focus immediately to this
                element.
            </info>
        </attribute>

        <attribute>
                <name>alt</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The alternate text for this element.</p>
                </info>
        </attribute>

        <attribute>
                <name>altKey</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The message resources key of the alternate text for this
                element.</p>
                </info>
        </attribute>

        <attribute>
          <name>disabled</name>
          <required>false</required>
          <rtexprvalue>true</rtexprvalue>
          <info>
          Set to <code>true</code> if this input field should be
          disabled.
          </info>
        </attribute>

        <attribute>
            <name>indexed</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Valid only inside of <code>logic:iterate</code> tag.
                If <code>true</code> then name of the html tag will be rendered as
                "id[34].propertyName". Number in brackets will be generated
                for every iteration and taken from ancestor logic:iterate tag.
            </info>
        </attribute>

        <attribute>
            <name>name</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The attribute name of the bean whose properties are consulted
                when rendering the current value of this input field. If not
                specified, the bean associated with the form tag we are nested
                within is utilized.
            </info>
        </attribute>

        <attribute>
            <name>onblur</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element loses input
                focus.
            </info>
        </attribute>

        <attribute>
            <name>onchange</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element loses input
                focus and its value has changed.
            </info>
        </attribute>

        <attribute>
            <name>onclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives a
                mouse click.
            </info>
        </attribute>

        <attribute>
            <name>ondblclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives a
                mouse double click.
            </info>
        </attribute>

        <attribute>
            <name>onfocus</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives input
                focus.
            </info>
        </attribute>

        <attribute>
            <name>onkeydown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is depressed.
            </info>
        </attribute>

        <attribute>
            <name>onkeypress</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is depressed and released.
            </info>
        </attribute>

        <attribute>
            <name>onkeyup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is released.
            </info>
        </attribute>

        <attribute>
            <name>onmousedown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the mouse
                pointer and a mouse button is depressed.
            </info>
        </attribute>

        <attribute>
            <name>onmousemove</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the
                mouse pointer and the pointer is moved.
            </info>
        </attribute>

        <attribute>
            <name>onmouseout</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element was under the
                mouse pointer but the pointer was moved outside the element.
            </info>
        </attribute>

        <attribute>
            <name>onmouseover</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element was not under
                the mouse pointer but the pointer is moved inside the element.
            </info>
        </attribute>

        <attribute>
            <name>onmouseup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the
                mouse pointer and a mouse button is released.
            </info>
        </attribute>

        <attribute>
            <name>property</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Name of this input field, and the name of the corresponding bean
                property if value is not specified. The corresponding bean property
                (if any) must be of type String.
            </info>
        </attribute>

        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS styles to be applied to this HTML element.
            </info>
        </attribute>

        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).
            </info>
        </attribute>

        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Identifier to be assigned to this HTML element (renders
                an "id" attribute).
            </info>
        </attribute>

        <attribute>
            <name>title</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
            <p>The advisory title for this element.</p>
            </info>
        </attribute>

        <attribute>
            <name>titleKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
            <p>The message resources key for the advisory title
            for this element.</p>
            </info>
        </attribute>

        <attribute>
            <name>value</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Value to which this field should be initialized. [Use the
                corresponding bean property value]
            </info>
        </attribute>

        <attribute>
            <name>write</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Should the value of this field also be rendered to the
                response page to make it visible, in addition to creating
                an HTML type="hidden" element?  By default, only the
                hidden element is created.
            </info>
        </attribute>

    </tag>


        <tag>

          <name>html</name>
          <summary>Render an HTML &lt;html&gt; Element</summary>
          <tagclass>org.apache.struts.taglib.html.HtmlTag</tagclass>
          <bodycontent>JSP</bodycontent>
          <info>
          <p>Renders an HTML <code>&lt;html&gt;</code> element with
          language attributes extracted from the user's current Locale
          object, if there is one.</p>
          </info>

	  <attribute>
            <name>lang</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                 Renders a lang attribute with the locale stored in the user's session.  If not 
                 found in the session, the language from the <code>Accept-Language</code>
                 HTTP header is used.  If still not found, the default language for the server 
                 is used.
            </info>
			<since>Struts 1.2</since>
        </attribute>

          <attribute>
            <name>locale</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
              <p>Set to <code>true</code> in order to store a Locale in the session based on
              the current request's <code>Accept-Language</code> header (if
              any) if none has currently been set.  This attribute will create a session
              if one does not already exist.  The lang attribute is rendered with the
              appropriate language code.</p>
            </info>
            <deprecated>
                Creating a session is undesirable for apps that don't support them.  Use the lang
                attribute to achieve the same functionality without creating a session.
            </deprecated>
          </attribute>

          <attribute>
            <name>xhtml</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
              <p>Set to <code>true</code> in order to render 
              <code>xml:lang</code> and <code>xmlns</code> attributes 
              on the generated <code>html</code> element.  This also 
              causes all other html tags to render as XHTML 1.0 (the 
              &lt;html:xhtml/&gt; tag has a similar purpose).
              </p>
            </info>
            <since>Struts 1.1</since>
          </attribute>

        </tag>

        <tag>
                <name>image</name>
                <summary>
                Render an input tag of type "image"
                </summary>
                <tagclass>org.apache.struts.taglib.html.ImageTag</tagclass>
                <info>

                <p>Renders an HTML <code>&lt;input&gt;</code> tag of type
                "image".  The base URL for this image is calculated directly
                based on the value specified in the <code>src</code> or
                <code>page</code> attributes, or indirectly by looking up a
                message resource string based on the <code>srcKey</code> or
                <code>pageKey</code> attributes.  You <strong>must</strong>
                specify exactly one of these attributes.</p>

                <p>If you would like to obtain the coordinates of the mouse
                click that submitted this request, see the information below
                on the <code>property</code> attribute.</p>
                
                <p>This tag is only valid when nested inside a form tag body.</p>

                </info>

        <attribute>
                <name>accesskey</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The keyboard character used to move focus immediately
                to this element.</p>
                </info>
        </attribute>

        <attribute>
                <name>align</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The alignment option for this image.</p>
                </info>
                <deprecated>
                    The align attribute is deprecated in HTML 4.x. The suggested alternative is to use CSS.
                    Please see http://www.w3.org/TR/REC-html40/struct/objects.html#h-13.7.4 for more details.
                </deprecated>
        </attribute>

        <attribute>
                <name>alt</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The alternate text for this image.</p>
                </info>
        </attribute>

        <attribute>
                <name>altKey</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The message resources key of the alternate text for this
                image.</p>
                </info>
        </attribute>

        <attribute>
                <name>border</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The width (in pixels) of the border around this image.</p>
                </info>
        </attribute>

        <attribute>
                <name>bundle</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The servlet context attribute key for the MessageResources
                instance to use.  If not specified, defaults to the
                application resources configured for our action servlet.</p>
                </info>
        </attribute>

        <attribute>
          <name>disabled</name>
          <required>false</required>
          <rtexprvalue>true</rtexprvalue>
          <info>
          Set to <code>true</code> if this input field should be
          disabled.
          </info>
        </attribute>

        <attribute>
            <name>indexed</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Valid only inside of logic:iterate tag.  If <code>true</code>
                then name of the html tag will be rendered as
                "propertyName[34]". Number in brackets will be generated for
                every iteration and taken from ancestor logic:iterate tag.
            </info>
        </attribute>

        <attribute>
                <name>locale</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The session attribute key for the Locale used to select
                internationalized messages.  If not specified, defaults to the
                Struts standard value.</p>
                </info>
        </attribute>

          <attribute>
            <name>onblur</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element loses input
                focus.
            </info>
          </attribute>

          <attribute>
            <name>onchange</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element loses input
                focus and its value has changed.
            </info>
          </attribute>

          <attribute>
            <name>onclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives a
                mouse click.
            </info>
          </attribute>

          <attribute>
            <name>ondblclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives a
                mouse double click.
            </info>
          </attribute>

          <attribute>
            <name>onfocus</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives input
                focus.
            </info>
          </attribute>

          <attribute>
            <name>onkeydown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus
                and a key is depressed.
            </info>
          </attribute>

          <attribute>
            <name>onkeypress</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus
                and a key is depressed and released.
            </info>
          </attribute>

          <attribute>
            <name>onkeyup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus
                and a key is released.
            </info>
          </attribute>

          <attribute>
            <name>onmousedown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under
                the mouse pointer and a mouse button is depressed.
            </info>
          </attribute>

          <attribute>
            <name>onmousemove</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the
                mouse pointer and the pointer is moved.
            </info>
          </attribute>

          <attribute>
            <name>onmouseout</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element was under
                the mouse pointer but the pointer was moved outside the
                element.
            </info>
          </attribute>

          <attribute>
            <name>onmouseover</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element was not
                under the mouse pointer but the pointer is moved inside the
                element.
            </info>
          </attribute>

          <attribute>
            <name>onmouseup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the
                mouse pointer and a mouse button is released.
            </info>
          </attribute>

        <attribute>
                <name>page</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The module-relative path of the image for this
                input tag.</p>
                </info>
        </attribute>

        <attribute>
                <name>pageKey</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The key of the message resources string specifying the
                module-relative path of the image for this input tag.</p>
                </info>
        </attribute>

        <attribute>
                <name>property</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The property name of this image tag.  The parameter names
                for the request will appear as "property.x" and "property.y",
                the x and y representing the coordinates of the mouse click
                for the image.  A way of retrieving these values through a
                form bean is to define getX(), getY(), setX(), and setY()
                methods, and specify your property as a blank string
                (property="").</p>
                </info>
        </attribute>

        <attribute>
                <name>src</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The source URL of the image for this input tag.</p>
                </info>
        </attribute>

        <attribute>
                <name>srcKey</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The key of the message resources string specifying the
                source URL of the image for this input tag.</p>
                </info>
        </attribute>

          <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS styles to be applied to this HTML element.
            </info>
          </attribute>

          <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).
            </info>
          </attribute>

        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Identifier to be assigned to this HTML element (renders
                an "id" attribute).
            </info>
        </attribute>

          <attribute>
            <name>tabindex</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The tab order (ascending positive integers) for this element.
            </info>
          </attribute>

                <attribute>
                  <name>title</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The advisory title for this element.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>titleKey</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The message resources key for the advisory title
                  for this element.</p>
                  </info>
                </attribute>

          <attribute>
            <name>value</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
              <p>The value that will be submitted if this image button
              is pressed.</p>
            </info>
          </attribute>

        </tag>


        <tag>

                <name>img</name>
                <summary>Render an HTML img tag</summary>
                <tagclass>org.apache.struts.taglib.html.ImgTag</tagclass>
        <bodycontent>empty</bodycontent>
                <info>

                <p>Renders an HTML <code>&lt;img&gt;</code> element with
                the image at the specified URL.  Like the link tag, URL
                rewriting will be applied automatically to the value
                specified in <code>src</code>, <code>page</code>, or
                <code>action</code> to maintain session state
                in the absence of cookies.  This will allow dynamic
                generation of an image where the content displayed for this
                image will be taken from the attributes of this tag.</p>

                <p>The base URL for this image is calculated directly based on
                the value specified in <code>src</code>, <code>page</code>, or
                <code>action</code> or <code>page</code>,
                or indirectly by looking up a message resource string based on
                the <code>srcKey</code> or <code>pageKey</code> attributes.
                You <strong>must</strong> specify exactly one of these
                attributes.</p>

                <p>Normally, the <code>src</code>, <code>page</code>, or
                <code>action</code> that you specify will be left
                unchanged (other than URL rewriting if necessary).  However,
                there are two ways you can append one or more dynamically
                defined query parameters to the <code>src</code> URL --
                specify a single parameter with the <code>paramId</code>
                attribute (at its associated attributes to select the value),
                or specify the <code>name</code> (and optional
                <code>property</code>) attributes to select a
                <code>java.util.Map</code> bean that contains one or more
                parameter ids and corresponding values.</p>

                <p>To specify a single parameter, use the <code>paramId</code>
                attribute to define the name of the request parameter to be
                submitted.  To specify the corresponding value, use one of the
                following approaches:</p>
                <ul>
                <li><em>Specify only the <code>paramName</code> attribute</em>
                    - The named JSP bean (optionally scoped by the value of the
                    <code>paramScope</code> attribute) must identify a value
                    that can be converted to a String.</li>
                <li><em>Specify both the <code>paramName</code> and
                    <code>paramProperty</code> attributes</em> - The specified
                    property getter will be called on the JSP bean identified
                    by the <code>paramName</code> (and optional
                    <code>paramScope</code>) attributes, in order to select
                    a value that can be converted to a String.</li>
                </ul>

                <p>If you prefer to specify a <code>java.util.Map</code> that
                contains all of the request parameters to be added to the
                hyperlink, use one of the following techniques:</p>
                <ul>
                <li><em>Specify only the <code>name</code> attribute</em> -
                    The named JSP bean (optionally scoped by the value of
                    the <code>scope</code> attribute) must identify a
                    <code>java.util.Map</code> containing the parameters.</li>
                <li><em>Specify both <code>name</code> and
                    <code>property</code> attributes</em> - The specified
                    property getter method will be called on the bean
                    identified by the <code>name</code> (and optional
                    <code>scope</code>) attributes, in order to return the
                    <code>java.util.Map</code> containing the parameters.</li>
                </ul>

                <p>As the <code>Map</code> is processed, the keys are assumed
                to be the names of query parameters to be appended to the
                <code>src</code> URL.  The value associated with each key
                must be either a String or a String array representing the
                parameter value(s), or an object whose toString() method
                will be called.  If a String array is specified, more than
                one value for the same query parameter name will be
                created.</p>

                <p>You can specify the alternate text for this image (which
                most browsers display as pop-up text block when the user
                hovers the mouse over this image) either directly, through
                the <code>alt</code> attribute, or indirectly from a message
                resources bundle, using the <code>bundle</code> and
                <code>altKey</code> attributes.</p>

                </info>

                <attribute>
                  <name>align</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>Where the image is aligned to.  Can be one of the
                  following attributes:</p>
                  <ul>
                   <li>left - left justify, wrapping text on right</li>
                    <li>right -right justify, wrapping test on left</li>
                    <li>top - aligns the image with the top of the text on
                        the same row</li>
                    <li>middle - aligns the image's vertical center with the
                        text base line</li>
                    <li>bottom - aligns the image with the bottom of the
                        text's base line</li>
                    <li>texttop - aligns the image's top with that of the
                        text font on the same line</li>
                    <li>absmiddle - aligns the image's vertical center with the
                        absolute center of the text</li>
                    <li>absbottom - aligns the image with the absolute bottom
                        of the text font on the same row</li>
                  </ul>
                  </info>
                </attribute>

        <attribute>
                <name>alt</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                  <p>And alternative text to be displayed in browsers that
                     don't support graphics.  Also used often as type of
                     context help over images.</p>
                </info>
        </attribute>

        <attribute>
                <name>altKey</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The message resources key of the alternate text for this
                element.</p>
                </info>
        </attribute>

                <attribute>
                  <name>border</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The width of the border surrounding the image.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>bundle</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The servlet context attribute key for the MessageResources
                  instance to use.  If not specified, defaults to the
                  application resources configured for our action servlet.</p>
                  </info>
                </attribute>

                <attribute>
                    <name>contextRelative</name>
                    <required>false</required>
                    <rtexprvalue>true</rtexprvalue>
                    <deprecated>Use module attribute instead; will be removed in a release afer 1.2.0.</deprecated>
						  <info>
						  <p>If set to "true", this "anchors" the image src at the
						  application context rather than the module context when the
						  'page' attribute is used to specify an image path.</p>
						  </info>
                </attribute>

                <attribute>
                  <name>height</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The height of the image being displayed.  This parameter
                     is very nice to specify (along with <code>width</code>)
                     to help the browser render the page faster.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>hspace</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The amount of horizontal spacing between the icon and
                     the text.  The text may be in the same paragraph, or
                     be wrapped around the image.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>imageName</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The scriptable name to be defined within this page, so
                  that you can reference it with intra-page scripts.  In other
                  words, the value specified here will render a "name" element
                  in the generated image tag.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>ismap</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The name of the server-side map that this image belongs
                     to.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>locale</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The name of the request or session Locale attribute used
                  to look up internationalized messages.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>lowsrc</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>
                  An image for people with low resolution graphics cards.
                  </p>
                  </info>
                  <deprecated>
                      This attribute is not defined in the HTML 4.01 spec and 
                      will be removed in a future version of Struts.
                  </deprecated>
                </attribute>

                <attribute>
                  <name>name</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The name of a JSP bean that contains a <code>Map</code>
                  representing the query parameters (if <code>property</code>
                  is not specified), or a JSP bean whose property getter is
                  called to return a <code>Map</code> (if <code>property</code>
                  is specified).</p>
                  </info>
                </attribute>

                <attribute>
                    <name>onclick</name>
                    <required>false</required>
                    <rtexprvalue>true</rtexprvalue>
                    <info>
                        JavaScript event handler executed when this element receives a
                        mouse click.
                    </info>
                </attribute>

                <attribute>
                    <name>ondblclick</name>
                    <required>false</required>
                    <rtexprvalue>true</rtexprvalue>
                    <info>
                        JavaScript event handler executed when this element receives a
                        mouse double click.
                    </info>
                </attribute>

                <attribute>
                  <name>onkeydown</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>JavaScript event handler that is executed when
                  this element receives a key down event.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>onkeypress</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>JavaScript event handler that is executed when
                  this element receives a key press event.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>onkeyup</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>JavaScript event handler that is executed when
                  this element receives a key up event.</p>
                  </info>
                </attribute>

                <attribute>
                    <name>onmousedown</name>
                    <required>false</required>
                    <rtexprvalue>true</rtexprvalue>
                    <info>
                        JavaScript event handler executed when this element is under the mouse
                        pointer and a mouse button is depressed.
                    </info>
                </attribute>

                <attribute>
                    <name>onmousemove</name>
                    <required>false</required>
                    <rtexprvalue>true</rtexprvalue>
                    <info>
                        JavaScript event handler executed when this element is under the
                        mouse pointer and the pointer is moved.
                    </info>
                </attribute>

                <attribute>
                    <name>onmouseout</name>
                    <required>false</required>
                    <rtexprvalue>true</rtexprvalue>
                    <info>
                        JavaScript event handler executed when this element was under the
                        mouse pointer but the pointer was moved outside the element.
                    </info>
                </attribute>

                <attribute>
                    <name>onmouseover</name>
                    <required>false</required>
                    <rtexprvalue>true</rtexprvalue>
                    <info>
                        JavaScript event handler executed when this element was not under
                        the mouse pointer but the pointer is moved inside the element.
                    </info>
                </attribute>

                <attribute>
                    <name>onmouseup</name>
                    <required>false</required>
                    <rtexprvalue>true</rtexprvalue>
                    <info>
                        JavaScript event handler executed when this element is under the
                        mouse pointer and a mouse button is released.
                    </info>
                </attribute>

                <attribute>
                  <name>paramId</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The name of the request parameter that will be dynamically
                  added to the generated src URL.  The corresponding value is
                  defined by the <code>paramName</code> and (optional)
                  <code>paramProperty</code> attributes, optionally scoped by
                  the <code>paramScope</code> attribute</p>
                  </info>
                </attribute>

                <attribute>
                  <name>page</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The module-relative path, starting with a slash, of
                  the image to be displayed by this tag.  The rendered
                  URL for this image will automatically prepend the context
                  path of this web application (in the same manner as the
                  <code>page</code> attribute on the link tag works),
                  in addition to any necessary URL rewriting.  You
                  <strong>must</strong> specify either the <code>page</code>
                  attribute or the <code>src</code> attribute.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>pageKey</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The message key, in the message resources bundle named by
                  the <code>bundle</code> attribute, of the String to be
                  used as the module-relative path for this image.</p>
                  </info>
                </attribute>

            <attribute>
              <name>action</name>
              <required>false</required>
              <rtexprvalue>true</rtexprvalue>
              <info>
              <p>The action, starting with a slash, that will render
              the image to be displayed by this tag.  The rendered
              URL for this image will automatically prepend the context
              path of this web application (in the same manner as the
              <code>action</code> attribute on the link tag works),
              in addition to any necessary URL rewriting.  You
              <strong>must</strong> specify the <code>action</code>,
              <code>page</code>
                  attribute or the <code>src</code> attribute.</p>
               
		       <p>Additionally, you can specify a <code>module</code> prefix 
			   for linking to other modules.</p>
						   
			   </info>
			 </attribute>
					
			 <attribute>
			   <name>module</name>
			   <required>false</required>
			   <rtexprvalue>true</rtexprvalue>
			   <info>
				   <p>Prefix name of a <code>Module</code> that
				   contains the action mapping for the <code>Action</code>
				   that is specified by the <code>action</code> attribute.
				   You <strong>must</strong> specify an <code>action</code> 
				   attribute for this to have an effect.</p>
			
				   <p><strong>Note: </strong>Use "" to map to the default module.</p>
			  </info>
			 </attribute>

                <attribute>
                  <name>paramName</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The name of a JSP bean that is a String containing the
                  value for the request parameter named by <code>paramId</code>
                  (if <code>paramProperty</code> is not specified), or a JSP
                  bean whose property getter is called to return a String
                  (if <code>paramProperty</code> is specified).  The JSP bean
                  is constrained to the bean scope specified by the
                  <code>paramScope</code> property, if it is specified.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>paramProperty</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The name of a property of the bean specified by the
                  <code>paramName</code> attribute, whose return value must
                  be a String containing the value of the request parameter
                  (named by the <code>paramId</code> attribute) that will be
                  dynamically added to this src URL.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>paramScope</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The scope within which to search for the bean specified
                  by the <code>paramName</code> attribute.  If not specified,
                  all scopes are searched.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>property</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The name of a property of the bean specified by the
                  <code>name</code> attribute, whose return value must be
                  a <code>java.util.Map</code> containing the query parameters
                  to be added to the src URL.  You <strong>must</strong>
                  specify the <code>name</code> attribute if you specify
                  this attribute.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>scope</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The scope within which to search for the bean specified
                  by the <code>name</code> attribute.  If not specified, all
                  scopes are searched.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>src</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The URL to which this image will be transferred from
                  This image may be dynamically modified
                  by the inclusion of query parameters, as described in the
                  tag description.  This value will be used unmodified (other
                  than potential URL rewriting) as the value of the "src"
                  attribute in the rendered tag.  You <strong>must</strong>
                  specify either the <code>page</code> attribute or the
                  <code>src</code> attribute.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>srcKey</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The message key, in the message resources bundle named by
                  the <code>bundle</code> attribute, of the String to be
                  used as the URL of this image.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>style</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>CSS styles to be applied to this element.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>styleClass</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  CSS stylesheet class to be applied to this HTML element
                  (renders a "class" attribute).
                  </info>
                </attribute>

        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Identifier to be assigned to this HTML element (renders
                an "id" attribute).
            </info>
        </attribute>

                <attribute>
                  <name>title</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The advisory title for this element.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>titleKey</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The message resources key for the advisory title
                  for this element.</p>
                  </info>
                </attribute>

            <attribute>
              <name>useLocalEncoding</name>
              <required>false</required>
              <rtexprvalue>true</rtexprvalue>
              <info>
              <p>If set to <code>true</code>, LocalCharacterEncoding will be
              used, that is, the characterEncoding set to the HttpServletResponse,
              as prefered character encoding rather than UTF-8, when
              URLEncoding is done on parameters of the URL.</p>
              </info>
            </attribute>

                <attribute>
                  <name>usemap</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The name of the map as defined within this page for
                     mapping hot-spot areas of this image.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>vspace</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The amount of vertical spacing between the icon and
                     the text, above and below.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>width</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The width of the image being displayed.  This parameter
                     is very nice to specify (along with <code>height</code>)
                     to help the browser render the page faster.</p>
                  </info>
                </attribute>

        </tag>

    <tag>

        <name>javascript</name>
        <summary>
            Render JavaScript validation based on the
            validation rules loaded by the <code>ValidatorPlugIn</code>.
        </summary>
        <tagclass>org.apache.struts.taglib.html.JavascriptValidatorTag</tagclass>
        <bodycontent>empty</bodycontent>
        <info>
            <p>
                Render JavaScript validation based on the
                validation rules loaded by the <code>ValidatorPlugIn</code>.
                The set of validation rules that should be generated is based
                on the formName attribute passed in, which should match
                the name attribute of the form element in the xml file.
            </p>
            <p>
                The dynamicJavascript and staticJavascript attributes
                default to true, but if dynamicJavascript is set to <code>true</code>
                and staticJavascript is set to <code>false</code> then only
                the dynamic JavaScript will be rendered.  If dynamicJavascript
                is set to <code>false</code>
                and staticJavascript is set to <code>true</code> then only
                the static JavaScript will be rendered which can then be put in
                separate JSP page so the browser can cache the static JavaScript.
            </p>
        </info>

		<attribute>
            <name>cdata</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
               <p>
                  If set to "true" and XHTML has been enabled, the JavaScript will
                  be wrapped in a CDATA section to prevent XML parsing. The default is
                  "true" to comply with the W3C's recommendation.
               </p>
            </info>
            <since>Struts 1.1</since>
        </attribute>
        
        <attribute>
            <name>dynamicJavascript</name>
            <required>false</required>
            <rtexprvalue>false</rtexprvalue>
            <info>
               <p>
                  Whether or not to render the dynamic JavaScript.
                  Defaults to <code>true</code>.
               </p>
            </info>
        </attribute>
        <attribute>
            <name>formName</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
               <p>
                  The key (form name) to retrieve a specific
                  set of validation rules.  If "dynamicJavascript" is set 
                  to <code>true</code> and formName is missing or is not 
                  recognized by the <code>ValidatorPlugIn</code>, a 
                  JspException will be thrown.
               </p>
            </info>
        </attribute>
        <attribute>
            <name>method</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
               <p>
                  The alternate JavaScript method name to be used
                  instead of the of the default.  The default is
                  'validate' concatenated in front of
                  the key (form name) passed in (ex: validateRegistrationForm).
               </p>
            </info>
        </attribute>
        <attribute>
            <name>page</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
               <p>
                  The current page of a set of validation rules
                  if the page attribute for the field element
                  in the xml file is in use.
               </p>
            </info>
        </attribute>
        
        <attribute>
            <name>scriptLanguage</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The &lt;script&gt; element will not contain a language attribute
                when this is set to false.  The default is true but this property is ignored
                in XHTML mode.
            </info>
            <since>Struts 1.2</since>
        </attribute>
        
        <attribute>
            <name>src</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
               <p>
                  The src attribute's value when defining
                  the html script element.
               </p>
            </info>
        </attribute>
        <attribute>
            <name>staticJavascript</name>
            <required>false</required>
            <rtexprvalue>false</rtexprvalue>
            <info>
               <p>
                  Whether or not to render the static JavaScript.
                  Defaults to <code>true</code>.
               </p>
            </info>
        </attribute>
        <attribute>
            <name>htmlComment</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
               <p>
                  Whether or not to enclose the javascript
                  with HTML comments.  This attribute is ignored in XHTML
                  mode because the script would be deleted by the XML parser.  See
                  the cdata attribute for details on hiding scripts from XML
                  parsers. 
                  Defaults to <code>true</code>.
               </p>
            </info>
        </attribute>

    </tag>

        <tag>

                <name>link</name>
                <summary>Render an HTML anchor or hyperlink</summary>
                <tagclass>org.apache.struts.taglib.html.LinkTag</tagclass>
                <info>

                <p>Renders an HTML <code>&lt;a&gt;</code> element as an
                anchor definition (if "linkName" is specified) or as a
                hyperlink to the specified URL.  URL rewriting will be
                applied automatically, to maintain session state in the
                absence of cookies.  The content displayed for this
                hyperlink will be taken from the body of this tag.</p>

                <p>The base URL for this hyperlink is calculated based on
                which of the following attributes you specify (you must
                specify exactly one of them):</p>
                <ul>
                <li><em>forward</em> - Use the value of this attribute as the
                    name of a global <code>ActionForward</code> to be looked
                    up, and use the module-relative or context-relative
                    URI found there.</li>
                <li><em>action</em> - Use the value of this attribute as the
                    name of a <code>Action</code> to be looked
                    up, and use the module-relative or context-relative
                    URI found there.</li>
                 <li><em>href</em> - Use the value of this attribute unchanged.
                     </li>
                 <li><em>page</em> - Use the value of this attribute as a
                    module-relative URI, and generate a server-relative
                    URI by including the context path and module
                    prefix.</li>
                </ul>

                <p>Normally, the hyperlink you specify with one of the
                attributes described in the previous paragraph will be left
                unchanged (other than URL rewriting if necessary).  However,
                there are two ways you can append one or more dynamically
                defined query parameters to the hyperlink -- specify a single
                parameter with the <code>paramId</code> attribute (and its
                associated attributes to select the value), or specify the
                <code>name</code> (and optional <code>property</code>)
                attributes to select a <code>java.util.Map</code> bean that
                contains one or more parameter ids and corresponding values.
                </p>

                <p>To specify a single parameter, use the <code>paramId</code>
                attribute to define the name of the request parameter to be
                submitted.  To specify the corresponding value, use one of the
                following approaches:</p>
                <ul>
                <li><em>Specify only the <code>paramName</code> attribute</em>
                    - The named JSP bean (optionally scoped by the value of the
                    <code>paramScope</code> attribute) must identify a value
                    that can be converted to a String.</li>
                <li><em>Specify both the <code>paramName</code> and
                    <code>paramProperty</code> attributes</em> - The specified
                    property getter method will be called on the JSP bean
                    identified by the <code>paramName</code> (and optional
                    <code>paramScope</code>) attributes, in order to select
                    a value that can be converted to a String.</li>
                </ul>

                <p>If you prefer to specify a <code>java.util.Map</code> that
                contains all of the request parameters to be added to the
                hyperlink, use one of the following techniques:</p>
                <ul>
                <li><em>Specify only the <code>name</code> attribute</em> -
                    The named JSP bean (optionally scoped by the value of
                    the <code>scope</code> attribute) must identify a
                    <code>java.util.Map</code> containing the parameters.</li>
                <li><em>Specify both <code>name</code> and
                    <code>property</code> attributes</em> - The specified
                    property getter method will be called on the bean
                    identified by the <code>name</code> (and optional
                    <code>scope</code>) attributes, in order to return the
                    <code>java.util.Map</code> containing the parameters.</li>
                </ul>

                <p>As the <code>Map</code> is processed, the keys are assumed
                to be the names of query parameters to be appended to the
                hyperlink.  The value associated with each key must be either
                a String or a String array representing the parameter value(s),
                or an object whose toString() method will be called.
                If a String array is specified, more than one value for the
                same query parameter name will be created.</p>

                <p>Additionally, you can request that the current transaction
                control token, if any, be included in the generated hyperlink
                by setting the <code>transaction</code> attribute to
                <code>true</code>.
                You can also request that an anchor ("#xxx") be added to the
                end of the URL that is created by any of the above mechanisms,
                by using the <code>anchor</code> attribute.</p>

                </info>

                <attribute>
                  <name>accesskey</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The keyboard character used to move focus immediately
                  to this element.</p>
                  </info>
                 </attribute>
 
                 <attribute>
                  <name>action</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>Logical name of a <code>Action</code> that
                  contains the actual content-relative URI of the destination
                  of this transfer.  This hyperlink may be dynamically
                  modified by the inclusion of query parameters, as described
                  in the tag description.  You <strong>must</strong> specify
                  exactly one of the <code>action</code> attribute, the
                  <code>forward</code> attribute, the
                  <code>href</code> attribute, the <code>linkName</code>
                  attribute, or the <code>page</code> attribute.</p>
               
		       <p>Additionally, you can specify a <code>module</code> prefix 
			   for linking to other modules.</p>
						   
			   </info>
			 </attribute>
					
			 <attribute>
			   <name>module</name>
			   <required>false</required>
			   <rtexprvalue>true</rtexprvalue>
			   <info>
				   <p>Prefix name of a <code>Module</code> that
				   contains the action mapping for the <code>Action</code>
				   that is specified by the <code>action</code> attribute.
				   You <strong>must</strong> specify an <code>action</code> 
				   attribute for this to have an effect.</p>
			
				   <p><strong>Note: </strong>Use "" to map to the default module.</p>
			  </info>
			 </attribute>

                <attribute>
                  <name>anchor</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>Optional anchor tag ("#xxx") to be added to the generated
                  hyperlink.  Specify this value <strong>without</strong> any
                  "#" character.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>forward</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>Logical name of a global <code>ActionForward</code> that
                  contains the actual content-relative URI of the destination
                   of this transfer.  This hyperlink may be dynamically
                   modified by the inclusion of query parameters, as described
                   in the tag description.  You <strong>must</strong> specify
                   exactly one of the <code>action</code> attribute, the
                   <code>forward</code> attribute, the
                   <code>href</code> attribute, the <code>linkName</code>
                   attribute, or the <code>page</code> attribute.</p>
                   </info>
                </attribute>

                <attribute>
                  <name>href</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The URL to which this hyperlink will transfer control
                   if activated.  This hyperlink may be dynamically modified
                   by the inclusion of query parameters, as described in the
                   tag description.  You <strong>must</strong> specify
                   exactly one of the <code>action</code> attribute, the
                   <code>forward</code> attribute, the
                   <code>href</code> attribute, the <code>linkName</code>
                   attribute, or the <code>page</code> attribute.</p>
                   </info>
                </attribute>

        <attribute>
            <name>indexed</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Valid only inside of logic:iterate tag.
                If <code>true</code> then indexed parameter with name from indexId attribute
                will be added to the query string. Indexed parameter looks like
                "index[32]". Number in brackets will be generated
                for every iteration and taken from ancestor logic:iterate tag.
            </info>
        </attribute>

        <attribute>
            <name>indexId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                By this attribute different name for the indexed parameter can be
                specified. Take a look to the "indexed" attribute for details.
            </info>
        </attribute>

                <attribute>
                  <name>linkName</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The anchor name to be defined within this page, so that
                  you can reference it with intra-page hyperlinks.  In other
                  words, the value specified here will render a "name" element
                  in the generated anchor tag.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>name</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The name of a JSP bean that contains a <code>Map</code>
                  representing the query parameters (if <code>property</code>
                  is not specified), or a JSP bean whose property getter is
                  called to return a <code>Map</code> (if <code>property</code>
                  is specified).</p>
                  </info>
                </attribute>

                <attribute>
                  <name>onblur</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>JavaScript event handler that is executed when
                  this element loses input focus.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>onclick</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>JavaScript event handler that is executed when
                  this element receives a mouse click.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>ondblclick</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>JavaScript event handler that is executed when
                  this element receives a mouse double click.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>onfocus</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>JavaScript event handler that is executed when
                  this element receives input focus.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>onkeydown</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>JavaScript event handler that is executed when
                  this element receives a key down event.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>onkeypress</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>JavaScript event handler that is executed when
                  this element receives a key press event.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>onkeyup</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>JavaScript event handler that is executed when
                  this element receives a key up event.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>onmousedown</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>JavaScript event handler that is executed when
                  this element receives a mouse down event.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>onmousemove</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>JavaScript event handler that is executed when
                  this element receives a mouse move event.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>onmouseout</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>JavaScript event handler that is executed when
                  this element receives a mouse out event.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>onmouseover</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>JavaScript event handler that is executed when
                  this element receives a mouse over event.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>onmouseup</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>JavaScript event handler that is executed when
                  this element receives a mouse up event.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>page</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The module-relative path (beginning with a "/"
                  character) to which this hyperlink will transfer control
                   if activated.  This hyperlink may be dynamically modified
                   by the inclusion of query parameters, as described in the
                   tag description.  You <strong>must</strong> specify exactly
                   one of the <code>action</code> attribute,
                   <code>forward</code> attribute, the
                   <code>href</code> attribute, the <code>linkName</code>
                   attribute, or the <code>page</code> attribute.</p>
                   </info>
                </attribute>

                <attribute>
                  <name>paramId</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The name of the request parameter that will be dynamically
                  added to the generated hyperlink.  The corresponding value is
                  defined by the <code>paramName</code> and (optional)
                  <code>paramProperty</code> attributes, optionally scoped by
                  the <code>paramScope</code> attribute</p>
                  </info>
                </attribute>

                <attribute>
                  <name>paramName</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The name of a JSP bean that is a String containing the
                  value for the request parameter named by <code>paramId</code>
                  (if <code>paramProperty</code> is not specified), or a JSP
                  bean whose property getter is called to return a String
                  (if <code>paramProperty</code> is specified).  The JSP bean
                  is constrained to the bean scope specified by the
                  <code>paramScope</code> property, if it is specified.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>paramProperty</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The name of a property of the bean specified by the
                  <code>paramName</code> attribute, whose return value must
                  be a String containing the value of the request parameter
                  (named by the <code>paramId</code> attribute) that will be
                  dynamically added to this hyperlink.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>paramScope</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The scope within which to search for the bean specified
                  by the <code>paramName</code> attribute.  If not specified,
                  all scopes are searched.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>property</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The name of a property of the bean specified by the
                  <code>name</code> attribute, whose return value must be
                  a <code>java.util.Map</code> containing the query parameters
                  to be added to the hyperlink.  You <strong>must</strong>
                  specify the <code>name</code> attribute if you specify
                  this attribute.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>scope</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The scope within which to search for the bean specified
                  by the <code>name</code> attribute.  If not specified, all
                  scopes are searched.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>style</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>CSS styles to be applied to this element.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>styleClass</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  CSS stylesheet class to be applied to this HTML element
                  (renders a "class" attribute).
                  </info>
                </attribute>

        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Identifier to be assigned to this HTML element (renders
                an "id" attribute).
            </info>
        </attribute>

                <attribute>
                  <name>tabindex</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The tab order (ascending positive integers) for
                  this element.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>target</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The window target in which the resource requested by this
                  hyperlink will be displayed, for example in a framed
                  presentation.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>title</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The advisory title for this hyperlink.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>titleKey</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The message resources key for the advisory title
                  for this element.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>transaction</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>If set to <code>true</code>, any current transaction
                  control token will be included in the generated hyperlink,
                  so that it will pass an <code>isTokenValid()</code> test
                  in the receiving Action.</p>
                  </info>
                </attribute>

            <attribute>
              <name>useLocalEncoding</name>
              <required>false</required>
              <rtexprvalue>true</rtexprvalue>
              <info>
              <p>If set to <code>true</code>, LocalCharacterEncoding will be
              used, that is, the characterEncoding set to the HttpServletResponse,
              as prefered character encoding rather than UTF-8, when
              URLEncoding is done on parameters of the URL.</p>
              </info>
            </attribute>

        </tag>

        <tag>
                <name>messages</name>
                <summary>
                Conditionally display a set of accumulated messages.
                </summary>
                <tagclass>org.apache.struts.taglib.html.MessagesTag</tagclass>
                <teiclass>org.apache.struts.taglib.html.MessagesTei</teiclass>
                <bodycontent>JSP</bodycontent>
                <info>
                <p>Displays a set of messages prepared by a business
                logic component and stored as an <code>ActionMessages</code>
                object, <code>ActionErrors</code> object, a String,
                or a String array in any scope.  If
                such a bean is not found, nothing will be rendered.</p>

                <p>In order to use this tag successfully, you must have
                defined an application scope <code>MessageResources</code>
                bean under the default attribute name.</p>
                </info>

                <attribute>
                  <name>id</name>
                  <required>true</required>
                  <rtexprvalue>false</rtexprvalue>
                  <info>
                  The name of a page scope JSP bean that will contain the current
                  element of the collection of messages on each iteration, if it is not
                  <code>null</code>.
                  </info>
                </attribute>

                <attribute>
                    <name>bundle</name>
                    <required>false</required>
                    <rtexprvalue>true</rtexprvalue>
                    <info>
                    The servlet context attribute key for the MessageResources
                    instance to use.  If not specified, defaults to the
                    application resources configured for our action servlet.
                    </info>
                </attribute>

                <attribute>
                    <name>locale</name>
                    <required>false</required>
                    <rtexprvalue>true</rtexprvalue>
                    <info>
                    The session attribute key for the Locale used to select
                    messages to be displayed.  If not specified, defaults to
                    the Struts standard value.
                    </info>
                </attribute>

                <attribute>
                  <name>name</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  Name of the bean in any scope under which our messages
                  have been stored.  If not present, the name specified by the
                  <code>Globals.ERROR_KEY</code> constant string will be used.
                  </info>
                </attribute>

                <attribute>
                  <name>property</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  Name of the property for which messages should be
                  displayed.  If not specified, all messages (regardless
                  of property) are displayed.
                  </info>
                </attribute>

                <attribute>
                  <name>header</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  This value is an optional message resource key that will
                  be printed before the iteration of messages begins.
                  </info>
                </attribute>

                <attribute>
                  <name>footer</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  This value is an optional message resource key that will
                  be printed after the iteration of messages has finished.
                  </info>
                </attribute>

                <attribute>
                  <name>message</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  By default the tag will retrieve the bean it will
                  iterate over from the <code>Globals.ERROR_KEY</code> constant string,
                  but if this attribute is set to 'true' the bean
                  will be retrieved from the <code>Globals.MESSAGE_KEY</code>
                  constant string.  Also if this is set to 'true', any value
                  assigned to the name attribute will be ignored.
                  </info>
                </attribute>

        </tag>


    <tag>

        <name>multibox</name>
        <summary>
            Render A Checkbox Input Field
        </summary>
        <tagclass>org.apache.struts.taglib.html.MultiboxTag</tagclass>
        <info>
                        <p>Renders an HTML &lt;input&gt; element of type
                        <code>checkbox</code>, whose "checked" status is
                        initialized based on whether the specified value
                        matches one of the elements of the underlying
                        property's array of current values. This element is
                        useful when you have large numbers of checkboxes, and
                        prefer to combine the values into a single
                        array-valued property instead of multiple boolean
                        properties.  This tag is only valid when nested
                        inside a form tag body.</p>

                        <p><strong>WARNING</strong>:  In order to correctly
                        recognize cases where none of the associated checkboxes
                        are selected, the <code>ActionForm</code> bean
                        associated with this form must include a statement
                        setting the corresponding array to zero length in the
                        <code>reset()</code> method.</p>

                <p>The value to be returned to the server, if this checkbox is
                selected, must be defined by one of the following methods:</p>
                <ul>
                <li>Specify a <code>value</code> attribute, whose contents will
                be used literally as the value to be returned.</li>
                <li>Specify no <code>value</code> attribute, and the nested
                body content of this tag will be used as the value to be
                returned.</li>
                </ul>

        </info>

        <attribute>
            <name>accesskey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The keyboard character used to move focus immediately to this
                element.
            </info>
        </attribute>

        <attribute>
                <name>alt</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The alternate text for this element.</p>
                </info>
        </attribute>

        <attribute>
                <name>altKey</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The message resources key of the alternate text for this
                element.</p>
                </info>
        </attribute>

        <attribute>
          <name>disabled</name>
          <required>false</required>
          <rtexprvalue>true</rtexprvalue>
          <info>
          Set to <code>true</code> if this input field should be
          disabled.
          </info>
        </attribute>

        <attribute>
            <name>name</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The attribute name of the bean whose properties are consulted when
                rendering the current value of this input field. If not specified,
                the bean associated with the form tag we are nested within is utilized.
            </info>
        </attribute>

        <attribute>
            <name>onblur</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element loses input
                focus.
            </info>
        </attribute>

        <attribute>
            <name>onchange</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element loses input
                focus and its value has changed.
            </info>
        </attribute>

        <attribute>
            <name>onclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives a
                mouse click.
            </info>
        </attribute>


        <attribute>
            <name>ondblclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives a
                mouse double click.
            </info>
        </attribute>

        <attribute>
            <name>onfocus</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives input
                focus.
            </info>
        </attribute>


        <attribute>
            <name>onkeydown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is depressed.
            </info>
        </attribute>

        <attribute>
            <name>onkeypress</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is depressed and released.
            </info>
        </attribute>

        <attribute>
            <name>onkeyup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is released.
            </info>
        </attribute>

        <attribute>
            <name>onmousedown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the mouse
                pointer and a mouse button is depressed.
            </info>
        </attribute>

        <attribute>
            <name>onmousemove</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the
                mouse pointer and the pointer is moved.
            </info>
        </attribute>

        <attribute>
            <name>onmouseout</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element was under the
                mouse pointer but the pointer was moved outside the element.
            </info>
        </attribute>

        <attribute>
            <name>onmouseover</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element was not under
                the mouse pointer but the pointer is moved inside the element.
            </info>
        </attribute>

        <attribute>
            <name>onmouseup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the
                mouse pointer and a mouse button is released.
            </info>
        </attribute>

        <attribute>
            <name>property</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Name of the request parameter that will be included with this
                submission, set to the specified value.
            </info>
        </attribute>

        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS styles to be applied to this HTML element.
            </info>
        </attribute>

        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).
            </info>
        </attribute>

        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Identifier to be assigned to this HTML element (renders
                an "id" attribute).
            </info>
        </attribute>

        <attribute>
            <name>tabindex</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The tab order (ascending positive integers) for this element.
            </info>
        </attribute>

                <attribute>
                  <name>title</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The advisory title for this element.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>titleKey</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The message resources key for the advisory title
                  for this element.</p>
                  </info>
                </attribute>

        <attribute>
            <name>value</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                        The value to be transmitted if this checkbox is
                        checked when the form is submitted.
            </info>
        </attribute>
    </tag>


    <tag>

        <name>option</name>
        <summary>
                Render A Select Option
        </summary>
        <tagclass>org.apache.struts.taglib.html.OptionTag</tagclass>
        <info>
                <p>Render an HTML <code>&lt;option&gt;</code> element,
                representing one of the choices for an enclosing
                <code>&lt;select&gt;</code> element.  The text displayed to the
                user comes from either the body of this tag, or from a message
                string looked up based on the <code>bundle</code>,
                <code>locale</code>, and <code>key</code> attributes.</p>

                <p>If the value of the corresponding bean property matches the
                specified value, this option will be marked selected.  This tag
                is only valid when nested inside a
                <code>&lt;html:select&gt;</code> tag body.</p>
        </info>

                <attribute>
                    <name>bundle</name>
                    <required>false</required>
                    <rtexprvalue>true</rtexprvalue>
                    <info>
                    The servlet context attributes key for the MessageResources
                    instance to use.  If not specified, defaults to the
                    application resources configured for our action servlet.
                    </info>
                </attribute>

        <attribute>
          <name>disabled</name>
          <required>false</required>
          <rtexprvalue>true</rtexprvalue>
          <info>
          Set to <code>true</code> if this option should be
          disabled.
          </info>
        </attribute>

                <attribute>
                    <name>key</name>
                    <required>false</required>
                    <rtexprvalue>true</rtexprvalue>
                    <info>
                    If specified, defines the message key to be looked up in
                    the resource bundle specified by <code>bundle</code> for
                    the text displayed to the user for this option.  If not
                    specified, the text to be displayed is taken from the body
                    content of this tag.
                    </info>
                </attribute>

                <attribute>
                    <name>locale</name>
                    <required>false</required>
                    <rtexprvalue>true</rtexprvalue>
                    <info>
                    The session attributes key for the Locale instance to use
                    for looking up the message specified by the
                    <code>key</code> attribute.  If not specified, uses the
                    standard Struts session attribute name.
                    </info>
                </attribute>

        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS styles to be applied to this HTML element.
            </info>
        </attribute>

        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Identifier to be assigned to this HTML element (renders
                an "id" attribute).
            </info>
        </attribute>

        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).
            </info>
        </attribute>

        <attribute>
                    <name>value</name>
                    <required>true</required>
                    <rtexprvalue>true</rtexprvalue>
                    <info>
                    Value to be submitted for this field if this option is
                    selected by the user.
                    </info>
        </attribute>

    </tag>


    <tag>

        <name>options</name>
        <summary>
            Render a Collection of Select Options
        </summary>
        <tagclass>org.apache.struts.taglib.html.OptionsTag</tagclass>
        <bodycontent>empty</bodycontent>
        <info>
                <p>Renders a set of HTML <code>&lt;option&gt;</code> elements,
                representing possible choices for a <code>&lt;select&gt;</code>
                element.  This tag can be used multiple times within a single
                <code>&lt;html:select&gt;</code> element, either in conjunction
                with or instead of one or more <code>&lt;html:option&gt;</code>
                or <code>&lt;html:optionsCollection&gt;</code> elements.</p>

                <p>This tag operates in one of two major modes, depending on
                whether or not the <code>collection</code> attribute is
                specified.  If the <code>collection</code> attribute is
                included, the following rules apply:</p>
                <ul>
                <li>The <strong>collection</strong> attribute is interpreted
                    as the name of a JSP bean, in some scope, that itself
                    represents a collection of individual beans, one per option
                    value to be rendered.</li>
                <li>The <strong>property</strong> attribute is interpreted as
                    the name of a property of the individual beans included in
                    the collection, and is used to retrieve the value that will
                    be returned to the server if this option is selected.</li>
                <li>The <strong>labelProperty</strong> attribute is interpreted
                    as the name of a property of the individual beans included
                    in the collection, and is used to retrieve the label that
                    will be displayed to the user for this option.  If the
                    <code>labelProperty</code> attribute is not specified, the
                    property named by the <code>property</code> attribute will
                    be used to select both the value returned to the server and
                    the label displayed to the user for this option.</li>
                </ul>

                <p>If the <code>collection</code> attribute is not specified,
                the rules described in the remainder of this section apply.</p>

                <p>The collection of values actually selected depends on the presence or
                absence of the <code>name</code> and <code>property</code> attributes.  The
                following combinations are allowed:</p>
                <ul>
                <li><em>Only <code>name</code> is specified</em> - The value of this attribute
                    is the name of a JSP bean in some scope that is the
                    collection.</li>
                <li><em>Only <code>property</code> is specified</em> - The value of this
                    attribute is the name of a property of the ActionForm bean associated
                    with our form, which will return the collection.</li>
                <li><em>Both <code>name</code> and <code>property</code> are specified</em> -
                    The value of the <code>name</code> attribute identifies a JSP bean
                    in some scope.  The value of the <code>property</code> attribute is the
                    name of some property of that bean which will return the collection.</li>
                </ul>

                <p>The collection of labels displayed to the user can be the same as the
                option values themselves, or can be different, depending on the presence or
                absence of the <code>labelName</code> and <code>labelProperty</code>
                attributes.  If this feature is used, the collection of labels must contain
                the same number of elements as the corresponding collection of values.
                The following combinations are allowed:</p>
                <ul>
                <li><em>Neither <code>labelName</code> nor <code>labelProperty</code> is
                    specified</em> - The labels will be the same as the option values
                    themselves.</li>
                <li><em>Only <code>labelName</code> is specified</em> - The value of this
                    attribute is the name of a JSP bean in some scope that is the
                    collection.</li>
                <li><em>Only <code>labelProperty</code> is specified</em> - The value of this
                    attribute is the name of a property of the ActionForm bean associated
                    with our form, which will return the collection.</li>
                <li><em>Both <code>labelName</code> and <code>labelProperty</code> are
                    specified</em> - The value of the <code>labelName</code> attribute
                    identifies a JSP bean in some scope.  The value of the
                    <code>labelProperty</code> attribute is the name of some property of
                    that bean which will return the collection.</li>
                </ul>


            <p>Note that this tag does not support a <code>styleId</code>
            attribute, as it would have to apply the value to all the
            <code>option</code> elements created by this element, which would
            mean that more than one <code>id</code> element might have the same
            value, which the HTML specification says is illegal.</p>

        </info>

                <attribute>
                        <name>collection</name>
                        <required>false</required>
                        <rtexprvalue>true</rtexprvalue>
                        <info>
                        Name of the JSP bean (in some scope) which is itself a
                        Collection of other beans, each of which has properties
                        named by the "property" and "labelProperty" attributes
                        that are used to retrieve the value and label for each
                        option, respectively.
                        </info>
                </attribute>

        <attribute>
            <name>filter</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Set to <code>false</code> if you do NOT want the option labels
                filtered for sensitive characters in HTML.  By default, such
                values are filtered.
            </info>
        </attribute>

        <attribute>
            <name>labelName</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Name of the JSP bean (in some scope) containing the collection of labels to
                be displayed to the user for these options.
            </info>
        </attribute>

        <attribute>
            <name>labelProperty</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Property of the form bean, or the bean specified by the labelName
                attribute, that will return the collection of labels to be displayed
                to the user for these options.
            </info>
        </attribute>

        <attribute>
            <name>name</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Name of the JSP bean (in some scope) containing the collection of
                values to be returned to the server for these options. If not
                specified, the form bean associated with our form is assumed.
            </info>
        </attribute>

        <attribute>
            <name>property</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Property of the form bean, or the bean specified by the name
                attribute, that will return the collection of values to returned
                to the server for these options.
            </info>
        </attribute>

        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS styles to be applied to this HTML element.
            </info>
        </attribute>

        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).
            </info>
        </attribute>
    </tag>

    <tag>

        <name>optionsCollection</name>
        <summary>
            Render a Collection of Select Options
        </summary>
        <tagclass>org.apache.struts.taglib.html.OptionsCollectionTag</tagclass>
        <bodycontent>empty</bodycontent>
        <info>
            <p>Renders a set of HTML <code>&lt;option&gt;</code> elements,
            representing possible choices for a <code>&lt;select&gt;</code>
            element.  This tag can be used multiple times within a single
            <code>&lt;html:select&gt;</code> element, either in conjunction
            with or instead of one or more <code>&lt;html:option&gt;</code>
            or <code>&lt;html:options&gt;</code> elements.</p>

            <p>This tag operates on a collection of beans, where each bean
            has a <strong>label</strong> property and a <strong>value</strong>
            property. The actual names of these properties can be configured
            using the <code>label</code> and <code>value</code> attributes
            of this tag.</p>

            <p>This tag differs from the <code>&lt;html:options&gt;</code> tag
            in that it makes more consistent use of the <code>name</code> and
            <code>property</code> attributes, and allows the collection to be
            more easily obtained from the enclosing form bean.</p>

            <p>Note that this tag does not support a <code>styleId</code>
            attribute, as it would have to apply the value to all the
            <code>option</code> elements created by this element, which would
            mean that more than one <code>id</code> element might have the same
            value, which the HTML specification says is illegal.</p>
        </info>

        <attribute>
            <name>filter</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Set to <code>false</code> if you do NOT want the option labels
                filtered for sensitive characters in HTML.  By default, such
                values are filtered.
            </info>
        </attribute>

        <attribute>
            <name>label</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The property of the bean within the collection which represents
                the label to be rendered for each option. Defaults to "label".
            </info>
        </attribute>

        <attribute>
            <name>name</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The attribute name of the bean whose properties are consulted
                when rendering the current value of this input field. If not
                specified, the bean associated with the form tag we are nested
                within is utilized.
            </info>
        </attribute>

        <attribute>
            <name>property</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The property of the form bean, or the bean specified by the name
                attribute, that will return the collection of objects to be
                rendered for these options.
            </info>
        </attribute>

        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS styles to be applied to this HTML element.
            </info>
        </attribute>

        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).
            </info>
        </attribute>

        <attribute>
            <name>value</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The property of the bean within the collection which represents
                the value to be rendered for each option. Defaults to "value".
            </info>
        </attribute>
    </tag>

    <tag>

        <name>password</name>
        <summary>
            Render A Password Input Field
        </summary>
        <tagclass>org.apache.struts.taglib.html.PasswordTag</tagclass>
        <info>
            Renders an HTML &lt;input&gt; element of type password, populated
            from the specified value or the specified property of the bean
            associated with our current form. This tag is only valid when
            nested inside a form tag body.
        </info>

        <attribute>
            <name>accesskey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The keyboard character used to move focus immediately to this
                element.
            </info>
        </attribute>

        <attribute>
                <name>alt</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The alternate text for this element.</p>
                </info>
        </attribute>

        <attribute>
                <name>altKey</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The message resources key of the alternate text for this
                element.</p>
                </info>
        </attribute>

        <attribute>
          <name>disabled</name>
          <required>false</required>
          <rtexprvalue>true</rtexprvalue>
          <info>
          Set to <code>true</code> if this input field should be
          disabled.
          </info>
        </attribute>

        <attribute>
            <name>indexed</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Valid only inside of logic:iterate tag.
                If <code>true</code> then name of the html tag will be rendered as
                "id[34].propertyName". Number in brackets will be generated
                for every iteration and taken from ancestor logic:iterate tag.
            </info>
        </attribute>

        <attribute>
            <name>maxlength</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Maximum number of input characters to accept. [No limit]
            </info>
        </attribute>

        <attribute>
            <name>name</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The attribute name of the bean whose properties are consulted when
                rendering the current value of this input field. If not specified,
                the bean associated with the form tag we are nested within is utilized.
            </info>
        </attribute>

        <attribute>
            <name>onblur</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element loses input
                focus.
            </info>
        </attribute>

        <attribute>
            <name>onchange</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element loses input
                focus and its value has changed.
            </info>
        </attribute>

        <attribute>
            <name>onclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives a
                mouse click.
            </info>
        </attribute>


        <attribute>
            <name>ondblclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives a
                mouse double click.
            </info>
        </attribute>

        <attribute>
            <name>onfocus</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives input
                focus.
            </info>
        </attribute>


        <attribute>
            <name>onkeydown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is depressed.
            </info>
        </attribute>

        <attribute>
            <name>onkeypress</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is depressed and released.
            </info>
        </attribute>

        <attribute>
            <name>onkeyup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is released.
            </info>
        </attribute>

        <attribute>
            <name>onmousedown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the mouse
                pointer and a mouse button is depressed.
            </info>
        </attribute>

        <attribute>
            <name>onmousemove</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the
                mouse pointer and the pointer is moved.
            </info>
        </attribute>

        <attribute>
            <name>onmouseout</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element was under the
                mouse pointer but the pointer was moved outside the element.
            </info>
        </attribute>

        <attribute>
            <name>onmouseover</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element was not under
                the mouse pointer but the pointer is moved inside the element.
            </info>
        </attribute>

        <attribute>
            <name>onmouseup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the
                mouse pointer and a mouse button is released.
            </info>
        </attribute>

        <attribute>
            <name>property</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Name of the request parameter that will be included with this
                submission, set to the specified value.
            </info>
        </attribute>

        <attribute>
          <name>readonly</name>
          <required>false</required>
          <rtexprvalue>true</rtexprvalue>
          <info>
          Set to <code>true</code> if this input field should be
          read only.
          </info>
        </attribute>

                <attribute>
                        <name>redisplay</name>
                        <required>false</required>
                        <rtexprvalue>true</rtexprvalue>
                        <info>
                        Boolean flag indicating whether or not existing values
                        will be redisplayed if they exist.  Even though the
                        redisplayed value will be shown as asterisks on the
                        visible HTML page, the cleartext of the actual password
                        value will be visible though the "Show Page Source"
                        menu option of the client browser.  You may wish to
                        set this value to <code>false</code> on login pages.
                        Defaults to <code>true</code> for consistency with
                        all other form tags that redisplay their contents.
                        </info>
                </attribute>

        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS styles to be applied to this HTML element.
            </info>
        </attribute>

        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).
            </info>
        </attribute>

        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Identifier to be assigned to this HTML element (renders
                an "id" attribute).
            </info>
        </attribute>

        <attribute>
            <name>size</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Number of character positions to allocate. [Browser default]
            </info>
        </attribute>

        <attribute>
            <name>tabindex</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The tab order (ascending positive integers) for this element.
            </info>
        </attribute>

                <attribute>
                  <name>title</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The advisory title for this element.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>titleKey</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The message resources key for the advisory title
                  for this element.</p>
                  </info>
                </attribute>

        <attribute>
            <name>value</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Value of the label to be placed on this button. This value will
                also be submitted as the value of the specified request parameter.
                [Body of this tag (if any)]
            </info>
        </attribute>
    </tag>


    <tag>

        <name>radio</name>
        <summary>
            Render A Radio Button Input Field
        </summary>
        <tagclass>org.apache.struts.taglib.html.RadioTag</tagclass>
        <info>
            <p>
            Renders an HTML &lt;input&gt; element of type radio, populated from
            the specified property of the bean associated with our current form.
            This tag is only valid when nested inside a form tag body.
            </p>
            <p>
            If an iterator is used to render a series of radio tags, the
            idName attribute may be used to specify the name of the bean
            exposed by the iterator. In this case, the value attribute is
            used as the name of a property on the idName bean that returns
            the value of the radio tag in this iteration.
            </p>
        </info>


        <attribute>
            <name>accesskey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The keyboard character used to move focus immediately to this
                element.
            </info>
        </attribute>

        <attribute>
                <name>alt</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The alternate text for this element.</p>
                </info>
        </attribute>

        <attribute>
                <name>altKey</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The message resources key of the alternate text for this
                element.</p>
                </info>
        </attribute>

        <attribute>
          <name>disabled</name>
          <required>false</required>
          <rtexprvalue>true</rtexprvalue>
          <info>
          Set to <code>true</code> if this input field should be
          disabled.
          </info>
        </attribute>

        <attribute>
            <name>indexed</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Valid only inside of logic:iterate tag.
                If <code>true</code> then name of the html tag will be rendered as
                "id[34].propertyName". Number in brackets will be generated
                for every iteration and taken from ancestor logic:iterate tag.
            </info>
        </attribute>

        <attribute>
            <name>name</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The attribute name of the bean whose properties are consulted when
                rendering the current value of this input field. If not specified,
                the bean associated with the form tag we are nested within is utilized.
            </info>
        </attribute>

        <attribute>
            <name>onblur</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element loses input
                focus.
            </info>
        </attribute>

        <attribute>
            <name>onchange</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element loses input
                focus and its value has changed.
            </info>
        </attribute>

        <attribute>
            <name>onclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives a
                mouse click.
            </info>
        </attribute>


        <attribute>
            <name>ondblclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives a
                mouse double click.
            </info>
        </attribute>

        <attribute>
            <name>onfocus</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives input
                focus.
            </info>
        </attribute>


        <attribute>
            <name>onkeydown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is depressed.
            </info>
        </attribute>

        <attribute>
            <name>onkeypress</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is depressed and released.
            </info>
        </attribute>

        <attribute>
            <name>onkeyup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is released.
            </info>
        </attribute>

                <attribute>
                        <name>property</name>
                        <required>true</required>
                        <rtexprvalue>true</rtexprvalue>
                        <info>
                                The corresponding bean property for this radio tag.
                        </info>
                </attribute>

        <attribute>
            <name>onmousedown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the mouse
                pointer and a mouse button is depressed.
            </info>
        </attribute>

        <attribute>
            <name>onmousemove</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the
                mouse pointer and the pointer is moved.
            </info>
        </attribute>

        <attribute>
            <name>onmouseout</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element was under the
                mouse pointer but the pointer was moved outside the element.
            </info>
        </attribute>

        <attribute>
            <name>onmouseover</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element was not under
                the mouse pointer but the pointer is moved inside the element.
            </info>
        </attribute>

        <attribute>
            <name>onmouseup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the
                mouse pointer and a mouse button is released.
            </info>
        </attribute>

        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS styles to be applied to this HTML element.
            </info>
        </attribute>

        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).
            </info>
        </attribute>

        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Identifier to be assigned to this HTML element (renders
                an "id" attribute).
            </info>
        </attribute>

        <attribute>
            <name>tabindex</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The tab order (ascending positive integers) for this element.
            </info>
        </attribute>

                <attribute>
                  <name>title</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The advisory title for this element.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>titleKey</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The message resources key for the advisory title
                  for this element.</p>
                  </info>
                </attribute>

                <attribute>
                        <name>value</name>
                        <required>true</required>
                        <rtexprvalue>true</rtexprvalue>
                        <info>
                            The value of the radio tag.
                        </info>
                </attribute>

        <attribute>
            <name>idName</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                <p>Name of the bean (in some scope) that will return the
                value of the radio tag. Usually exposed
                by an iterator. When the idName attribute is
                present, the value attribute is used as the name of the
                property on the idName bean that will return the
                value of the radio tag for this iteration.</p>
            </info>
            <since>Struts 1.1</since>
        </attribute>


    </tag>


    <tag>

        <name>reset</name>
        <summary>
            Render A Reset Button Input Field
        </summary>
        <tagclass>org.apache.struts.taglib.html.ResetTag</tagclass>
        <info>
            Renders an HTML &lt;input&gt; element of type reset.
        </info>


        <attribute>
            <name>accesskey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The keyboard character used to move focus immediately to this
                element.
            </info>
        </attribute>

        <attribute>
                <name>alt</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The alternate text for this element.</p>
                </info>
        </attribute>

        <attribute>
                <name>altKey</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The message resources key of the alternate text for this
                element.</p>
                </info>
        </attribute>

        <attribute>
          <name>disabled</name>
          <required>false</required>
          <rtexprvalue>true</rtexprvalue>
          <info>
          Set to <code>true</code> if this input field should be
          disabled.
          </info>
        </attribute>

        <attribute>
            <name>onblur</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element loses input
                focus.
            </info>
        </attribute>

        <attribute>
            <name>onchange</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element loses input
                focus and its value has changed.
            </info>
        </attribute>

        <attribute>
            <name>onclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives a
                mouse click.
            </info>
        </attribute>


        <attribute>
            <name>ondblclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives a
                mouse double click.
            </info>
        </attribute>

        <attribute>
            <name>onfocus</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives input
                focus.
            </info>
        </attribute>


        <attribute>
            <name>onkeydown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is depressed.
            </info>
        </attribute>

        <attribute>
            <name>onkeypress</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is depressed and released.
            </info>
        </attribute>

        <attribute>
            <name>onkeyup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is released.
            </info>
        </attribute>

        <attribute>
            <name>onmousedown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the mouse
                pointer and a mouse button is depressed.
            </info>
        </attribute>

        <attribute>
            <name>onmousemove</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the
                mouse pointer and the pointer is moved.
            </info>
        </attribute>

        <attribute>
            <name>onmouseout</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element was under the
                mouse pointer but the pointer was moved outside the element.
            </info>
        </attribute>

        <attribute>
            <name>onmouseover</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element was not under
                the mouse pointer but the pointer is moved inside the element.
            </info>
        </attribute>

        <attribute>
            <name>onmouseup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the
                mouse pointer and a mouse button is released.
            </info>
        </attribute>

        <attribute>
            <name>property</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Name of the input field that will be generated.
            </info>
        </attribute>

        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS styles to be applied to this HTML element.
            </info>
        </attribute>

        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).
            </info>
        </attribute>

        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Identifier to be assigned to this HTML element (renders
                an "id" attribute).
            </info>
        </attribute>

        <attribute>
            <name>tabindex</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The tab order (ascending positive integers) for this element.
            </info>
        </attribute>

                <attribute>
                  <name>title</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The advisory title for this element.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>titleKey</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The message resources key for the advisory title
                  for this element.</p>
                  </info>
                </attribute>

        <attribute>
            <name>value</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
            Value of the label to be placed on this button.
                        [Body of this tag (if any), or "Reset"]
            </info>
        </attribute>

    </tag>


        <tag>

                <name>rewrite</name>
                <summary>Render an URI</summary>
                <tagclass>org.apache.struts.taglib.html.RewriteTag</tagclass>
                <bodycontent>empty</bodycontent>
                <info>
                <p>Renders a request URI based on exactly the same rules
                as the <code><a href="#link">link</a></code> tag does,
                but without creating
                the <code>&lt;a&gt;</code> hyperlink.  This value is useful
                when you want to generate a string constant for use by
                a JavaScript procedure.</p>
                </info>

                 <attribute>
                  <name>action</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>Logical name of a <code>Action</code> that
                  contains the actual content-relative URI of the destination
                  of this transfer.  This hyperlink may be dynamically
                  modified by the inclusion of query parameters, as described
                  in the tag description. You <strong>must</strong> specify
                  exactly one of the <code>action</code> attribute, the
                  <code>forward</code> attribute, the
                  <code>href</code> attribute, or the <code>page</code>
                  attribute.</p>
               
		       <p>Additionally, you can specify a <code>module</code> prefix 
			   for linking to other modules.</p>
						   
			   </info>
                   <since>Struts 1.2.0</since>
			 </attribute>
					
			 <attribute>
			   <name>module</name>
			   <required>false</required>
			   <rtexprvalue>true</rtexprvalue>
			   <info>
				   <p>Prefix name of a <code>Module</code> that
				   contains the action mapping for the <code>Action</code>
				   that is specified by the <code>action</code> attribute.
				   You <strong>must</strong> specify an <code>action</code> 
				   attribute for this to have an effect.</p>
			
				   <p><strong>Note: </strong>Use "" to map to the default module.</p>
			  </info>
			 </attribute>

                <attribute>
                  <name>anchor</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>Optional anchor tag ("#xxx") to be added to the generated
                  hyperlink.  Specify this value <strong>without</strong> any
                  "#" character.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>forward</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>Logical name of a global <code>ActionForward</code> that
                   contains the actual content-relative URI of the destination
                   of this transfer.  This hyperlink may be dynamically
                   modified by the inclusion of query parameters, as described
                   in the tag description.  You <strong>must</strong> specify
                   exactly one of the <code>action</code> attribute, the
                   <code>forward</code> attribute, the
                   <code>href</code> attribute, or the <code>page</code>
                   attribute.</p>
                   </info>
                </attribute>
                
                <attribute>
                  <name>href</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The URL to which this hyperlink will transfer control
                   if activated.  This hyperlink may be dynamically modified
                   by the inclusion of query parameters, as described in the
                   tag description.  You <strong>must</strong> specify
                   exactly one of the <code>action</code> attribute, the
                   <code>forward</code> attribute, the
                   <code>href</code> attribute, or the <code>page</code>
                   attribute.</p>
                   </info>
                 </attribute>

                <attribute>
                  <name>name</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The name of a JSP bean that contains a <code>Map</code>
                  representing the query parameters (if <code>property</code>
                  is not specified), or a JSP bean whose property getter is
                  called to return a <code>Map</code> (if <code>property</code>
                  is specified).</p>
                  </info>
                </attribute>

                <attribute>
                  <name>page</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The module-relative path (beginning with a "/"
                  character) to which this hyperlink will transfer control
                   if activated.  This hyperlink may be dynamically modified
                   by the inclusion of query parameters, as described in the
                   tag description.  You <strong>must</strong> specify exactly
                   one of the <code>action</code> attribute, the 
                   <code>forward</code> attribute, the
                   <code>href</code> attribute, or the <code>page</code>
                   attribute.</p>
                   </info>                
                 </attribute>

                <attribute>
                  <name>paramId</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The name of the request parameter that will be dynamically
                  added to the generated hyperlink.  The corresponding value is
                  defined by the <code>paramName</code> and (optional)
                  <code>paramProperty</code> attributes, optionally scoped by
                  the <code>paramScope</code> attribute</p>
                  </info>
                </attribute>

                <attribute>
                  <name>paramName</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The name of a JSP bean that is a String containing the
                  value for the request parameter named by <code>paramId</code>
                  (if <code>paramProperty</code> is not specified), or a JSP
                  bean whose property getter is called to return a String
                  (if <code>paramProperty</code> is specified).  The JSP bean
                  is constrained to the bean scope specified by the
                  <code>paramScope</code> property, if it is specified.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>paramProperty</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The name of a property of the bean specified by the
                  <code>paramName</code> attribute, whose return value must
                  be a String containing the value of the request parameter
                  (named by the <code>paramId</code> attribute) that will be
                  dynamically added to this hyperlink.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>paramScope</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The scope within which to search for the bean specified
                  by the <code>paramName</code> attribute.  If not specified,
                  all scopes are searched.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>property</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The name of a property of the bean specified by the
                  <code>name</code> attribute, whose return value must be
                  a <code>java.util.Map</code> containing the query parameters
                  to be added to the hyperlink.  You <strong>must</strong>
                  specify the <code>name</code> attribute if you specify
                  this attribute.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>scope</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The scope within which to search for the bean specified
                  by the <code>name</code> attribute.  If not specified, all
                  scopes are searched.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>transaction</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>If set to <code>true</code>, any current transaction
                  control token will be included in the generated hyperlink,
                  so that it will pass an <code>isTokenValid()</code> test
                  in the receiving Action.</p>
                  </info>
                </attribute>

            <attribute>
              <name>useLocalEncoding</name>
              <required>false</required>
              <rtexprvalue>true</rtexprvalue>
              <info>
              <p>If set to <code>true</code>, LocalCharacterEncoding will be
              used, that is, the characterEncoding set to the HttpServletResponse,
              as prefered character encoding rather than UTF-8, when
              URLEncoding is done on parameters of the URL.</p>
              </info>
            </attribute>

        </tag>


    <tag>

        <name>select</name>
        <summary>
            Render A Select Element
        </summary>
        <tagclass>org.apache.struts.taglib.html.SelectTag</tagclass>
        <bodycontent>JSP</bodycontent>
        <info>
                        <p>Renders an HTML &lt;select&gt; element, associated
                        with a bean property specified by our attributes.  This
                        tag is only valid when nested inside a form tag body.
                        </p>

                        <p>This tag operates in two modes, depending upon the
                        state of the <code>multiple</code> attribute, which
                        affects the data type of the associated property you
                        should use:</p>
                        <ul>
                        <li><em>multiple="true" IS NOT selected</em> -
                            The corresponding property should be a scalar
                            value of any supported data type.</li>
                        <li><em>multiple="true" IS selected</em> -
                            The corresponding property should be an array
                            of any supported data type.</li>
                        </ul>

                        <p><strong>WARNING</strong>:  In order to correctly
                        recognize cases where no selection at all is made, the
                        <code>ActionForm</code> bean associated with this form
                        must include a statement resetting the scalar property
                        to a default value (if <code>multiple</code> is not
                        set), or the array property to zero length (if
                        <code>multiple</code> is set) in the
                        <code>reset()</code> method.</p>
        </info>


        <attribute>
                <name>alt</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The alternate text for this element.</p>
                </info>
        </attribute>

        <attribute>
                <name>altKey</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The message resources key of the alternate text for this
                element.</p>
                </info>
        </attribute>

        <attribute>
          <name>disabled</name>
          <required>false</required>
          <rtexprvalue>true</rtexprvalue>
          <info>
          Set to <code>true</code> if this input field should be
          disabled.
          </info>
        </attribute>

        <attribute>
            <name>indexed</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Valid only inside of logic:iterate tag.
                If <code>true</code> then name of the html tag will be rendered as
                "id[34].propertyName". Number in brackets will be generated
                for every iteration and taken from ancestor logic:iterate tag.
            </info>
        </attribute>

                <attribute>
                        <name>multiple</name>
                        <required>false</required>
                        <rtexprvalue>true</rtexprvalue>
                        <info>
                                If set to any arbitrary value, the rendered
                                select element will support
                                multiple selections.
                        </info>
                </attribute>

        <attribute>
            <name>name</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The attribute name of the bean whose properties are consulted
                to determine which option should be pre-selected when rendering
                this input field.  If not specified, the bean associated with
                the enclosing <code>&lt;html:form&gt;</code> tag is utilized.
            </info>
        </attribute>

        <attribute>
            <name>onblur</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element loses input
                focus.
            </info>
        </attribute>

        <attribute>
            <name>onchange</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element loses input
                focus and its value has changed.
            </info>
        </attribute>

        <attribute>
            <name>onclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives a
                mouse click.
            </info>
        </attribute>


        <attribute>
            <name>ondblclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives a
                mouse double click.
            </info>
        </attribute>

        <attribute>
            <name>onfocus</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives input
                focus.
            </info>
        </attribute>


        <attribute>
            <name>onkeydown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is depressed.
            </info>
        </attribute>

        <attribute>
            <name>onkeypress</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is depressed and released.
            </info>
        </attribute>

        <attribute>
            <name>onkeyup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is released.
            </info>
        </attribute>

        <attribute>
            <name>onmousedown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the mouse
                pointer and a mouse button is depressed.
            </info>
        </attribute>

        <attribute>
            <name>onmousemove</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the
                mouse pointer and the pointer is moved.
            </info>
        </attribute>

        <attribute>
            <name>onmouseout</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element was under the
                mouse pointer but the pointer was moved outside the element.
            </info>
        </attribute>

        <attribute>
            <name>onmouseover</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element was not under
                the mouse pointer but the pointer is moved inside the element.
            </info>
        </attribute>

        <attribute>
            <name>onmouseup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the
                mouse pointer and a mouse button is released.
            </info>
        </attribute>

        <attribute>
            <name>property</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Name of the request parameter that will be included with this
                submission, set to the specified value.
            </info>
        </attribute>

        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS styles to be applied to this HTML element.
            </info>
        </attribute>

        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).
            </info>
        </attribute>

        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Identifier to be assigned to this HTML element (renders
                an "id" attribute).
            </info>
        </attribute>

        <attribute>
            <name>tabindex</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The tab order (ascending positive integers) for this element.
            </info>
        </attribute>

        <attribute>
            <name>size</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The number of available options displayed at one time.
            </info>
        </attribute>

        <attribute>
            <name>title</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
            <p>The advisory title for this element.</p>
            </info>
        </attribute>

        <attribute>
            <name>titleKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
            <p>The message resources key for the advisory title
            for this element.</p>
            </info>
        </attribute>

        <attribute>
            <name>value</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The value to compare with for marking an option selected.
            </info>
        </attribute>
    </tag>


    <tag>

        <name>submit</name>
        <summary>
            Render A Submit Button
        </summary>
        <tagclass>org.apache.struts.taglib.html.SubmitTag</tagclass>
        <info>
            Renders an HTML &lt;input&gt; element of type <code>submit</code>.
            <p>
             If a graphical button is needed (a button with an image), then the
             <a href="#image"><code>image</code></a> tag is more appropriate.
            </p>
        </info>

        <attribute>
            <name>accesskey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The keyboard character used to move focus immediately to this
                element.
            </info>
        </attribute>

        <attribute>
                <name>alt</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The alternate text for this element.</p>
                </info>
        </attribute>

        <attribute>
                <name>altKey</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The message resources key of the alternate text for this
                element.</p>
                </info>
        </attribute>

        <attribute>
          <name>disabled</name>
          <required>false</required>
          <rtexprvalue>true</rtexprvalue>
          <info>
          Set to <code>true</code> if this input field should be
          disabled.
          </info>
        </attribute>

        <attribute>
            <name>indexed</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Valid only inside of logic:iterate tag.  If <code>true</code>
                then name of the html tag will be rendered as
                "propertyName[34]". Number in brackets will be generated for
                every iteration and taken from ancestor logic:iterate tag.
            </info>
        </attribute>

        <attribute>
            <name>onblur</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element loses input
                focus.
            </info>
        </attribute>

        <attribute>
            <name>onchange</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element loses input
                focus and its value has changed.
            </info>
        </attribute>

        <attribute>
            <name>onclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives a
                mouse click.
            </info>
        </attribute>


        <attribute>
            <name>ondblclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives a
                mouse double click.
            </info>
        </attribute>

        <attribute>
            <name>onfocus</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives input
                focus.
            </info>
        </attribute>


        <attribute>
            <name>onkeydown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is depressed.
            </info>
        </attribute>

        <attribute>
            <name>onkeypress</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is depressed and released.
            </info>
        </attribute>

        <attribute>
            <name>onkeyup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is released.
            </info>
        </attribute>

        <attribute>
            <name>onmousedown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the mouse
                pointer and a mouse button is depressed.
            </info>
        </attribute>

        <attribute>
            <name>onmousemove</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the
                mouse pointer and the pointer is moved.
            </info>
        </attribute>

        <attribute>
            <name>onmouseout</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element was under the
                mouse pointer but the pointer was moved outside the element.
            </info>
        </attribute>

        <attribute>
            <name>onmouseover</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element was not under
                the mouse pointer but the pointer is moved inside the element.
            </info>
        </attribute>

        <attribute>
            <name>onmouseup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the
                mouse pointer and a mouse button is released.
            </info>
        </attribute>

        <attribute>
            <name>property</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Name of the request parameter that will be included with this
                submission, set to the specified value.
            </info>
        </attribute>

        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS styles to be applied to this HTML element.
            </info>
        </attribute>

        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).
            </info>
        </attribute>

        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Identifier to be assigned to this HTML element (renders
                an "id" attribute).
            </info>
        </attribute>

        <attribute>
            <name>tabindex</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The tab order (ascending positive integers) for this element.
            </info>
        </attribute>

                <attribute>
                  <name>title</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The advisory title for this element.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>titleKey</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The message resources key for the advisory title
                  for this element.</p>
                  </info>
                </attribute>

        <attribute>
            <name>value</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The value of the button label.
            </info>
        </attribute>
    </tag>

    <tag>

        <name>text</name>
        <summary>
            Render An Input Field of Type text
        </summary>
        <tagclass>org.apache.struts.taglib.html.TextTag</tagclass>
        <info>
            Render an input button of type text.  This tag is only valid when nested
                inside a form tag body.
        </info>

        <attribute>
            <name>accesskey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The keyboard character used to move focus immediately to this
                element.
            </info>
        </attribute>

        <attribute>
                <name>alt</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The alternate text for this element.</p>
                </info>
        </attribute>

        <attribute>
                <name>altKey</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The message resources key of the alternate text for this
                element.</p>
                </info>
        </attribute>

        <attribute>
          <name>disabled</name>
          <required>false</required>
          <rtexprvalue>true</rtexprvalue>
          <info>
          Set to <code>true</code> if this input field should be
          disabled.
          </info>
        </attribute>

        <attribute>
            <name>indexed</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Valid only inside of logic:iterate tag.
                If <code>true</code> then name of the html tag will be rendered as
                "id[34].propertyName". Number in brackets will be generated
                for every iteration and taken from ancestor logic:iterate tag.
            </info>
        </attribute>

        <attribute>
            <name>maxlength</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Maximum number of input characters to accept. [No limit]
            </info>
        </attribute>

        <attribute>
            <name>name</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The attribute name of the bean whose properties are consulted
                when rendering the current value of this input field. If not
                specified, the bean associated with the form tag we are nested
                within is utilized.
            </info>
        </attribute>

        <attribute>
            <name>onblur</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element loses input
                focus.
            </info>
        </attribute>

        <attribute>
            <name>onchange</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element loses input
                focus and its value has changed.
            </info>
        </attribute>

        <attribute>
            <name>onclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives a
                mouse click.
            </info>
        </attribute>

        <attribute>
            <name>ondblclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives a
                mouse double click.
            </info>
        </attribute>

        <attribute>
            <name>onfocus</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives input
                focus.
            </info>
        </attribute>

        <attribute>
            <name>onkeydown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is depressed.
            </info>
        </attribute>

        <attribute>
            <name>onkeypress</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is depressed and released.
            </info>
        </attribute>

        <attribute>
            <name>onkeyup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is released.
            </info>
        </attribute>

        <attribute>
            <name>onmousedown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the mouse
                pointer and a mouse button is depressed.
            </info>
        </attribute>

        <attribute>
            <name>onmousemove</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the
                mouse pointer and the pointer is moved.
            </info>
        </attribute>

        <attribute>
            <name>onmouseout</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element was under the
                mouse pointer but the pointer was moved outside the element.
            </info>
        </attribute>

        <attribute>
            <name>onmouseover</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element was not under
                the mouse pointer but the pointer is moved inside the element.
            </info>
        </attribute>

        <attribute>
            <name>onmouseup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the
                mouse pointer and a mouse button is released.
            </info>
        </attribute>

        <attribute>
            <name>property</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Name of this input field, and the name of the corresponding bean
                property if value is not specified. The corresponding bean property
                (if any) must be of type String.
            </info>
        </attribute>

        <attribute>
          <name>readonly</name>
          <required>false</required>
          <rtexprvalue>true</rtexprvalue>
          <info>
          Set to <code>true</code> if this input field should be
          read only.
          </info>
        </attribute>

        <attribute>
            <name>size</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Number of character positions to allocate. [Browser default]
            </info>
        </attribute>

        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS styles to be applied to this HTML element.
            </info>
        </attribute>

        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).
            </info>
        </attribute>

        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Identifier to be assigned to this HTML element (renders
                an "id" attribute).
            </info>
        </attribute>

        <attribute>
            <name>tabindex</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The tab order (ascending positive integers) for this element.
            </info>
        </attribute>

                <attribute>
                  <name>title</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The advisory title for this element.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>titleKey</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The message resources key for the advisory title
                  for this element.</p>
                  </info>
                </attribute>

        <attribute>
            <name>value</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Value to which this field should be initialized. [Use the
                corresponding bean property value]
            </info>
        </attribute>

    </tag>


    <tag>

        <name>textarea</name>
        <summary>
            Render A Textarea
        </summary>
        <tagclass>org.apache.struts.taglib.html.TextareaTag</tagclass>
        <info>
            Render a textarea element.  This tag is only valid when nested
                inside a form tag body.
        </info>

        <attribute>
            <name>accesskey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The keyboard character used to move focus immediately to this
                element.
            </info>
        </attribute>

        <attribute>
                <name>alt</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The alternate text for this element.</p>
                </info>
        </attribute>

        <attribute>
                <name>altKey</name>
                <required>false</required>
                <rtexprvalue>true</rtexprvalue>
                <info>
                <p>The message resources key of the alternate text for this
                element.</p>
                </info>
        </attribute>

        <attribute>
            <name>cols</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The number of columns to display.
            </info>
        </attribute>

        <attribute>
          <name>disabled</name>
          <required>false</required>
          <rtexprvalue>true</rtexprvalue>
          <info>
          Set to <code>true</code> if this input field should be
          disabled.
          </info>
        </attribute>

        <attribute>
            <name>indexed</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Valid only inside of logic:iterate tag.
                If <code>true</code> then name of the html tag will be rendered as
                "id[34].propertyName". Number in brackets will be generated
                for every iteration and taken from ancestor logic:iterate tag.
            </info>
        </attribute>

        <attribute>
            <name>name</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The attribute name of the bean whose properties are consulted
                when rendering the current value of this input field. If not
                specified, the bean associated with the form tag we are nested
                within is utilized.
            </info>
        </attribute>

        <attribute>
            <name>onblur</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element loses input
                focus.
            </info>
        </attribute>

        <attribute>
            <name>onchange</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element loses input
                focus and its value has changed.
            </info>
        </attribute>

        <attribute>
            <name>onclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives a
                mouse click.
            </info>
        </attribute>

        <attribute>
            <name>ondblclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives a
                mouse double click.
            </info>
        </attribute>

        <attribute>
            <name>onfocus</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element receives input
                focus.
            </info>
        </attribute>

        <attribute>
            <name>onkeydown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is depressed.
            </info>
        </attribute>

        <attribute>
            <name>onkeypress</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is depressed and released.
            </info>
        </attribute>

        <attribute>
            <name>onkeyup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element has focus and a
                key is released.
            </info>
        </attribute>

        <attribute>
            <name>onmousedown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the mouse
                pointer and a mouse button is depressed.
            </info>
        </attribute>

        <attribute>
            <name>onmousemove</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the
                mouse pointer and the pointer is moved.
            </info>
        </attribute>

        <attribute>
            <name>onmouseout</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element was under the
                mouse pointer but the pointer was moved outside the element.
            </info>
        </attribute>

        <attribute>
            <name>onmouseover</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element was not under
                the mouse pointer but the pointer is moved inside the element.
            </info>
        </attribute>

        <attribute>
            <name>onmouseup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                JavaScript event handler executed when this element is under the
                mouse pointer and a mouse button is released.
            </info>
        </attribute>

        <attribute>
            <name>property</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Name of this input field, and the name of the corresponding bean
                property if value is not specified. The corresponding bean property
                (if any) must be of type String.
            </info>
        </attribute>

        <attribute>
          <name>readonly</name>
          <required>false</required>
          <rtexprvalue>true</rtexprvalue>
          <info>
          Set to <code>true</code> if this input field should be
          read only.
          </info>
        </attribute>

        <attribute>
            <name>rows</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The number of rows to display.
            </info>
        </attribute>

        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS styles to be applied to this HTML element.
            </info>
        </attribute>

        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).
            </info>
        </attribute>

        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Identifier to be assigned to this HTML element (renders
                an "id" attribute).
            </info>
        </attribute>

        <attribute>
            <name>tabindex</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The tab order (ascending positive integers) for this element.
            </info>
        </attribute>

                <attribute>
                  <name>title</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The advisory title for this element.</p>
                  </info>
                </attribute>

                <attribute>
                  <name>titleKey</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The message resources key for the advisory title
                  for this element.</p>
                  </info>
                </attribute>

        <attribute>
            <name>value</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Value to which this field should be initialized. [Use the
                corresponding bean property value]
            </info>
        </attribute>


    </tag>
    
    
    <tag>
          <name>xhtml</name>
          <summary>Render HTML tags as XHTML</summary>
          <tagclass>org.apache.struts.taglib.html.XhtmlTag</tagclass>
          <bodycontent>empty</bodycontent>
          <info>
          <p>
            Using this tag in a page tells all other html taglib tags
            to render themselves as XHTML 1.0.  This is useful
            when composing pages with JSP includes or Tiles. 
            &lt;html:html xhtml="true"&gt; has a similar effect.  This
            tag has no attributes; you use it like this: &lt;html:xhtml/&gt;.
          </p>
          <p>
          	<strong>Note</strong>: Included pages do not inherit the rendering
          	style of the including page.  Each JSP fragment or Tile must use this
          	tag to render as XHTML.  
          </p>
          </info>

        </tag>

</taglib>
</body>
</document>
