<?xml version="1.0"?>
<document url="./struts-form.xml">

<properties>
  <author>Mike Schachter</author>
  <title>DEPRECATED: The Struts Framework Project - Form Tags</title>
</properties>

<body>


<taglib>

  <tlibversion>1.0</tlibversion>
  <jspversion>1.1</jspversion>
  <shortname>form</shortname>
  <display-name>DEPRECATED: Form Construction Tags</display-name>
  <info>
  <p>
                DEPRECATED: This taglib has been deprecated, use of the
                struts-html.tld file is recommended in place of it, which
                contains all of this taglib's functionality.  All tags in
                org.apache.struts.taglib.form have been moved to
                org.apache.struts.taglib.html.  All tags in this file
                point to the new classes in org.apache.struts.taglib.html.

                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>
  </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.  There are no attributes
          associated with this tag.</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>
        </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 button, 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>
                </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>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.
                        </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>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>onblur</name>
                        <required>false</required>
                        <rtexprvalue>true</rtexprvalue>
                        <info>
                                JavaScript event handler executed when this element loses input
                                focus.
                        </info>
                </attribute>

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

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


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

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


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

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

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

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

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

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

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

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

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

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

                <attribute>
                        <name>styleClass</name>
                        <required>false</required>
                        <rtexprvalue>true</rtexprvalue>
                        <info>
                                CSS stylesheet class to be applied to this HTML element.
                        </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>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 checkbox, 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>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.
                        </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>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>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 at least 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>
                </ul>
                </info>

                <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>Action.ERROR_KEY</code> constant string will be used.
                  </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>
                </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>maxlength</name>
                        <required>false</required>
                        <rtexprvalue>true</rtexprvalue>
                        <info>
                                Maximum number of input characters to accept. [No limit]
                        </info>
                </attribute>

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

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

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

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


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

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


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

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

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

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

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

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

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

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

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

                <attribute>
                        <name>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.
                        </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>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>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>
                </info>

                <attribute>
                        <name>action</name>
                        <required>false</required>
                        <rtexprvalue>true</rtexprvalue>
                        <info>
                                The URL to which this form will be submitted. Typically, this will
                                match a mapping for the ActionServlet managing this application.
                                URL rewriting will automatically be performed on this URL, to
                                maintain session state in the absence of cookies. [Form will be
                                submitted to this page itself]
                        </info>
                </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>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>name</name>
                        <required>false</required>
                        <rtexprvalue>true</rtexprvalue>
                        <info>
                                Name of the request scope or session scope bean (as defined by
                                the scope attribute) whose properties will be used to populate
                                input field values. If no such bean is found, a new bean will
                                be created (and added to the appropriate scope), using the Java
                                class name specified by the type attribute.
                        </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>scope</name>
                        <required>false</required>
                        <rtexprvalue>true</rtexprvalue>
                        <info>
                                JSP scope within which the associated bean will be accessed
                                or created (request, session). [session]
                        </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.
                        </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>

                <attribute>
                        <name>type</name>
                        <required>false</required>
                        <rtexprvalue>true</rtexprvalue>
                        <info>
                                Fully qualified Java class name of the bean to be created
                                if no bean is found for the specified name and scope. To
                                be used successfully with the Struts ActionServlet, this class
                                must implement the org.apache.struts.action.ActionForm interface.
                                [Runtime error if bean creation is attempted]
                        </info>
                </attribute>
        </tag>

        <tag>

                <name>hidden</name>
                <summary>
                        Render A Checkbox Input Field
                </summary>
                <tagclass>org.apache.struts.taglib.html.HiddenTag</tagclass>
                <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>name</name>
                        <required>false</required>
                        <rtexprvalue>true</rtexprvalue>
                        <info>
                                The attribute name of the bean whose properties are consulted
                                when rendering the current value of this input field. If not
                                specified, the bean associated with the form tag we are nested
                                within is utilized.
                        </info>
                </attribute>

                <attribute>
                        <name>property</name>
                        <required>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>value</name>
                        <required>false</required>
                        <rtexprvalue>true</rtexprvalue>
                        <info>
                                Value to which this field should be initialized. [Use the
                                corresponding bean property value]
                        </info>
                </attribute>
        </tag>


        <tag>

          <name>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>locale</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
              <p>Set to <code>true</code> in order to record a Locale based on
              the current request's <code>Accept-Language</code> header (if
              any) if none has currently been set.</p>
            </info>
          </attribute>

          <attribute>
            <name>xhtml</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
              <p>Set to <code>true</code> in order to render an
              <code>xml:lang</code> attribute on the generated
              <code>html</code> element.</p>
            </info>
          </attribute>

        </tag>

      <tag>
          <name>image</name>
          <summary>
                Renders an input of type "image"
          </summary>
          <tagclass>org.apache.struts.taglib.html.ImageTag</tagclass>
          <info>
                This tag renders an input of type "image".  Use the "src" attribute
                in conjunction with a non-null "isKey" attribute to retrieve a
                property value from a resource bundle.  Use the "path"
                attribute to specify a direct path to the image.  See info on
                the "property" attribute if you would like to obtain the coordinates
                of the mouse click submitted with the request.
          </info>
          <attribute>
            <name>locale</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The locale to use to retrieve the key specified by "src".
            </info>
          </attribute>
          <attribute>
            <name>bundle</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The servlet context attribute key for the MessageResources
                instance to use.
            </info>
          </attribute>
          <attribute>
            <name>accesskey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
          </attribute>
          <attribute>
            <name>onblur</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
          </attribute>
          <attribute>
            <name>onchange</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
          </attribute>
          <attribute>
            <name>onclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
          </attribute>
          <attribute>
            <name>ondblclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
          </attribute>
          <attribute>
            <name>onfocus</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
          </attribute>
          <attribute>
            <name>onkeydown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
          </attribute>
          <attribute>
            <name>onkeypress</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
          </attribute>
          <attribute>
            <name>onkeyup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
          </attribute>
          <attribute>
            <name>onmousedown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
          </attribute>
          <attribute>
            <name>onmousemove</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
          </attribute>
          <attribute>
            <name>onmouseout</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
          </attribute>
          <attribute>
            <name>onmouseover</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
          </attribute>
          <attribute>
            <name>onmouseup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
          </attribute>
          <attribute>
            <name>property</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The 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 propery as a blank string (property="").
          </info>
          </attribute>
          <attribute>
            <name>src</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The "src" attribute of the input tag, or if "isKey" is not null,
                the key of the bundle value to use for this attribute.
            </info>
          </attribute>
          <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
          </attribute>
          <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
          </attribute>
          <attribute>
            <name>tabindex</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
          </attribute>
          <attribute>
            <name>value</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
          </attribute>
          <attribute>
            <name>path</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                The path of image for image button.
            </info>
          </attribute>
          <attribute>
            <name>isKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <info>
                Whether or not the "src" attribute represents a ResourceBundle key.
            </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 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
                    context-relative URI, and generate a server-relative URI
                    by including the context path.</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).
                If a String array is specified, more than one value for the
                same query parameter name will be created.</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>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>forward</code> attribute, the
                  <code>href</code> attribute, the <code>linkName</code>
                  attribute, or the <code>page</code> attribute.</p>
                  </info>
                </attribute>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                <attribute>
                  <name>page</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The context-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>forward</code> attribute, the
                  <code>href</code> attribute, the <code>linkName</code>
                  attribute, or the <code>page</code> attribute.</p>
                  </info>
                </attribute>

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

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

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

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

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

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

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

                <attribute>
                  <name>styleClass</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>CSS stylesheet class to be applied to this element.</p>
                  </info>
                </attribute>

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

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

        </tag>


        <tag>

                <name>multibox</name>
                <summary>
                        Render A Checkbox Input Field
                </summary>
                <tagclass>org.apache.struts.taglib.html.MultiboxTag</tagclass>
                <info>
                        <p>
                                Renders an HTML &lt;input&gt; element of type checkbox, whose "checked"
                                status is initialized based on whether the specified value matches
                                one of the elements of the underlying property's array of current
                                values. This element is useful when you have large numbers of
                                checkboxes, and prefer to combine the values into a single
                                array-valued property instead of multiple boolean properties.
                                This tag is only valid when nested inside a form tag body.
                        </p>
                </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>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.
                        </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>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>option</name>
                <summary>
                        Render A Select Option
                </summary>
                <tagclass>org.apache.struts.taglib.html.OptionTag</tagclass>
                <info>
                        <p>
                                Renders an HTML &lt;option&gt; element, representing one of the choices
                                for a &lt;select&gt; element. The text displayed to the user comes from
                                the body of this tag. If the value of the corresponding bean
                                property matches the specified value, this option will be marked
                                selected. This tag is only valid when nested inside a select tag
                                body.
                        </p>
                </info>

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

        <tag>

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

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

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

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

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

                </info>

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

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

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

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

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

        <tag>

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

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

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

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

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

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

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


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

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


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

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

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

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

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

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

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

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

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

                <attribute>
                        <name>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.
                        </info>
                </attribute>


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

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

                <attribute>
                        <name>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>radio</name>
                <summary>
                        Render A Radio Button Input Field
                </summary>
                <tagclass>org.apache.struts.taglib.html.RadioTag</tagclass>
                <info>
                        Renders an HTML &lt;input&gt; element of type radio, populated from
                        the specified property of the bean associated with our current form.
                        This tag is only valid when nested inside a form tag body.
                </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>name</name>
                        <required>false</required>
                        <rtexprvalue>true</rtexprvalue>
                        <info>
                                The attribute name of the bean whose properties are consulted when
                                rendering the current value of this input field. If not specified,
                                the bean associated with the form tag we are nested within is utilized.
                        </info>
                </attribute>

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

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

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


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

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


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

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

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

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

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

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

        </tag>

        <tag>

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


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

                <attribute>
                        <name>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>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.
                        </info>
                </attribute>

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


        <tag>

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

                <attribute>
                  <name>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>forward</code> attribute, the
                  <code>href</code> attribute, or the <code>page</code>
                  attribute.</p>
                  </info>
                </attribute>

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

                <attribute>
                  <name>page</name>
                  <required>false</required>
                  <rtexprvalue>true</rtexprvalue>
                  <info>
                  <p>The context-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>forward</code> attribute, the
                  <code>href</code> attribute, or the <code>page</code>
                  attribute.</p>
                  </info>
                </attribute>

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

                <attribute>
                  <name>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>

        </tag>


        <tag>

                <name>select</name>
                <summary>
                        Render A Select Element
                </summary>
                <tagclass>org.apache.struts.taglib.html.SelectTag</tagclass>
                <bodycontent>JSP</bodycontent>
                <info>
                        Custom tag that represents an HTML select element, associated with a
                        bean property specified by our attributes.  This tag must be nested
                        inside a form tag.
                </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>multiple</name>
                        <required>false</required>
                        <rtexprvalue>true</rtexprvalue>
                        <info>
                                If set to any arbitrary value, the rendered
                                select element will support
                                multiple selections.
                        </info>
                </attribute>

                <attribute>
                        <name>name</name>
                        <required>false</required>
                        <rtexprvalue>true</rtexprvalue>
                        <info>
                            The attribute name to use in determining which option
                            should be pre-selected when rendering 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.
                        </info>
                </attribute>

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

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

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


        <tag>

                <name>submit</name>
                <summary>
                        Render A Submit Button
                </summary>
                <tagclass>org.apache.struts.taglib.html.SubmitTag</tagclass>
                <info>
                        Render an input button of type submit.
                </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>onblur</name>
                        <required>false</required>
                        <rtexprvalue>true</rtexprvalue>
                        <info>
                                JavaScript event handler executed when this element loses input
                                focus.
                        </info>
                </attribute>

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

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


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

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


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

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

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

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

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

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

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

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

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

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

                <attribute>
                        <name>styleClass</name>
                        <required>false</required>
                        <rtexprvalue>true</rtexprvalue>
                        <info>
                                CSS stylesheet class to be applied to this HTML element.
                        </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>value</name>
                        <required>false</required>
                        <rtexprvalue>true</rtexprvalue>
                        <info>
                                The value of the button label.
                        </info>
                </attribute>
        </tag>

        <tag>

                <name>text</name>
                <summary>
                        Render An Input Field of Type text
                </summary>
                <tagclass>org.apache.struts.taglib.html.TextTag</tagclass>
                <info>
                        Render an input button of type text.
                </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>name</name>
                        <required>false</required>
                        <rtexprvalue>true</rtexprvalue>
                        <info>
                                The attribute name of the bean whose properties are consulted
                                when rendering the current value of this input field. If not
                                specified, the bean associated with the form tag we are nested
                                within is utilized.
                        </info>
                </attribute>

                <attribute>
                        <name>property</name>
                        <required>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>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>maxlength</name>
                        <required>false</required>
                        <rtexprvalue>true</rtexprvalue>
                        <info>
                                Maximum number of input characters to accept. [No limit]
                        </info>
                </attribute>

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

                <attribute>
                        <name>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>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.
                        </info>
                </attribute>

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


        <tag>

                <name>textarea</name>
                <summary>
                        Render A Textarea
                </summary>
                <tagclass>org.apache.struts.taglib.html.TextareaTag</tagclass>
                <info>
                        Render a textarea element.
                </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>cols</name>
                        <required>false</required>
                        <rtexprvalue>true</rtexprvalue>
                        <info>
                                The number of columns to display.
                        </info>
                </attribute>

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

                <attribute>
                        <name>property</name>
                        <required>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>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>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>rows</name>
                        <required>false</required>
                        <rtexprvalue>true</rtexprvalue>
                        <info>
                                The number of rows to display.
                        </info>
                </attribute>

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

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

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