<?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 ad