<?xml version="1.0" encoding="ISO-8859-1"?>
<taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
    version="2.1">
    <description>This is the rich UI tag library for Spring Faces.</description>
    <display-name>Spring Faces Rich UI Tags</display-name>
    <tlib-version>1.2</tlib-version>
    <short-name>sf</short-name>
    <uri>http://www.springframework.org/tags/faces</uri>

    <tag>
        <description>
            <![CDATA[<p>Renders the necessary CSS stylesheet includes for the Spring Faces components.</p>  
            <p>Use of this tag in the head section of a page that contains the Spring Faces components is recommended 
            as a browser performance optimization in keeping with the <a href="http://developer.yahoo.com/performance/">
            Yahoo performance guidelines</a>.  If this tag is not included, the stylesheet includes will be rendered 
            inline with the first instance of a Spring Faces component that requires them.</p>]]>
        </description>
        <name>includeStyles</name>
        <tag-class></tag-class>
        <body-content>empty</body-content>
        <attribute>
            <description>
                <![CDATA[<p>The dojo theme to include when importing the CSS stylesheets.</p>  
                <p>This can be either one of the pre-packaged Dojo themes or it can be a completely custom one that follows
                the necessary Dojo conventions.</p>]]>
            </description>
            <name>theme</name>
            <required>false</required>
            <deferred-value>
                <type>java.lang.String</type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[<p>The path to the Dojo theme to include when importing the CSS stylesheets.  Defaults to 
                /dijit/themes/</p>  
                <p>Note that the theme name will be appended to any specified path.  For example, if you have 
                a modified version of the Dojo Tundra theme located at the path /customTheme/tundra/, the proper
                value of the themePath attribute would be "/customTheme/".</p>]]>
            </description>
            <name>themePath</name>
            <required>false</required>
            <deferred-value>
                <type>java.lang.String</type>
            </deferred-value>
        </attribute>
    </tag>
    
    <tag>
        <description>
            <![CDATA[<p>Renders the necessary JavaScript file includes for the Spring Faces components.</p>  
            <p>Use of this tag in the head section of a page that contains the Spring Faces components is recommended 
            as a browser performance optimization in keeping with the <a href="http://developer.yahoo.com/performance/">
            Yahoo performance guidelines</a>.  If this tag is not included, the script includes will be rendered 
            inline with the first instance of a Spring Faces component that requires theme.</p>]]>
        </description>
        <name>includeScripts</name>
        <tag-class></tag-class>
        <body-content>empty</body-content>
    </tag>     

    <tag>
        <description>
            <![CDATA[<p>Renders a resource include that will route through the <code>ResourceServlet</code>.</p>
        <p>The included resource can be either CSS or JavaScript.  The type of include to render will be determined
        from the resource's file extension.  The ResourceServlet will set the proper response headers for aggressive
        caching of the resource by the browser and will gzip the resource if the client browser supports it.  These
        optimizations are in line with the <a href="http://developer.yahoo.com/performance/">Yahoo performance 
        guidelines</a>.  See the javadocs of the <code>ResourceServlet</code> for more information.</p>]]>
        </description>
        <name>resource</name>
        <tag-class></tag-class>
        <body-content>empty</body-content>
        <attribute>
            <description>
                <![CDATA[The local path to the resource.  This path can be either relative to the root of the web 
                application, or relative to the META-INF directory of a jar file on the classpath.  See the javadocs of
                the <code>ResourceServlet</code> for more detail on the resolution algorithm.]]>
            </description>
            <name>path</name>
            <required>true</required>
            <deferred-value>
                <type>java.lang.String</type>
            </deferred-value>
        </attribute>
    </tag>

    <tag>
        <description>
            <![CDATA[<p>Renders a special resource include that will combine any child <code>resource</code> includes
            into one HTTP request.</p>
            
            <p>The child <code>resource</code> components must all be of the same resource type.  This is especially 
            useful when combining modularized CSS files for a site.  Reducing the number of HTTP requests when a page
            loads is one of the <a href="http://developer.yahoo.com/performance/">Yahoo performance guidelines</a>.</p>]]>
        </description>
        <name>resourceGroup</name>
        <tag-class></tag-class>
        <body-content>JSP</body-content>
    </tag>

    <tag>
        <description>
            <![CDATA[<p>Applies client-side text validation behavior to a child <code>inputText</code> component.</p>]]>
        </description>
        <name>clientTextValidator</name>
        <tag-class></tag-class>
        <body-content>JSP</body-content>
        <attribute>
            <description><![CDATA[The message to display if value is invalid.]]></description>
            <name>invalidMessage</name>
            <required>false</required>
            <deferred-value>
                <type>java.lang.String</type>
            </deferred-value>
        </attribute>
        <attribute>
            <description><![CDATA[Converts all characters to lowercase if true.  Defaults to false.]]></description>
            <name>lowercase</name>
            <required>false</required>
            <deferred-value>
                <type>boolean</type>
            </deferred-value>
        </attribute>
        <attribute>
            <description><![CDATA[A hint message to be displayed to the user when entering the text field.]]></description>
            <name>promptMessage</name>
            <required>false</required>
            <deferred-value>
                <type>java.lang.String</type>
            </deferred-value>
        </attribute>
        <attribute>
            <description><![CDATA[Converts the first character of each word to uppercase if true.  Defaults to false.]]></description>
            <name>propercase</name>
            <required>false</required>
            <deferred-value>
                <type>boolean</type>
            </deferred-value>
        </attribute>
        <attribute>
            <description><![CDATA[JavaScript regular expression string used to validate the input.]]></description>
            <name>regExp</name>
            <required>false</required>
            <deferred-value>
                <type>java.lang.String</type>
            </deferred-value>
        </attribute>
        <attribute>
            <description><![CDATA[If true, the field must be non-empty to pass client-side validation.]]></description>
            <name>required</name>
            <required>false</required>
            <deferred-value>
                <type>boolean</type>
            </deferred-value>
        </attribute>
        <attribute>
            <description><![CDATA[Converts all characters to uppercase if true. Defaults to false.]]></description>
            <name>uppercase</name>
            <required>false</required>
            <deferred-value>
                <type>boolean</type>
            </deferred-value>
        </attribute>
    </tag>

    <tag>
        <description>
            <![CDATA[<p>Applies client-side numeric validation behavior to a child <code>inputText</code> component.</p>]]>
        </description>
        <name>clientNumberValidator</name>
        <tag-class></tag-class>
        <body-content>JSP</body-content>
        <attribute>
            <description><![CDATA[The message to display if value is invalid.]]></description>
            <name>invalidMessage</name>
            <required>false</required>
            <deferred-value>
                <type>java.lang.String</type>
            </deferred-value>
        </attribute>
        <attribute>
            <description><![CDATA[Converts all characters to lowercase if true.  Defaults to false.]]></description>
            <name>lowercase</name>
            <required>false</required>
            <deferred-value>
                <type>boolean</type>
            </deferred-value>
        </attribute>
        <attribute>
            <description><![CDATA[A hint message to be displayed to the user when entering the text field.]]></description>
            <name>promptMessage</name>
            <required>false</required>
            <deferred-value>
                <type>java.lang.String</type>
            </deferred-value>
        </attribute>
        <attribute>
            <description><![CDATA[Converts the first character of each word to uppercase if true.  Defaults to false.]]></description>
            <name>propercase</name>
            <required>false</required>
            <deferred-value>
                <type>boolean</type>
            </deferred-value>
        </attribute>
        <attribute>
            <description><![CDATA[The message to display if value is out-of-range.]]></description>
            <name>rangeMessage</name>
            <required>false</required>
            <deferred-value>
                <type>java.lang.String</type>
            </deferred-value>
        </attribute>
        <attribute>
            <description><![CDATA[JavaScript regular expression string used to validate the input.]]></description>
            <name>regExp</name>
            <required>false</required>
            <deferred-value>
                <type>java.lang.String</type>
            </deferred-value>
        </attribute>
        <attribute>
            <description><![CDATA[If true, the field must be non-empty to pass client-side validation.]]></description>
            <name>required</name>
            <required>false</required>
            <deferred-value>
                <type>boolean</type>
            </deferred-value>
        </attribute>
        <attribute>
            <description><![CDATA[Converts all characters to uppercase if true. Defaults to false.]]></description>
            <name>uppercase</name>
            <required>false</required>
            <deferred-value>
                <type>boolean</type>
            </deferred-value>
        </attribute>
    </tag>

    <tag>
        <description>
            <![CDATA[<p>Applies client-side currency validation behavior to a child <code>inputText</code> component.</p>]]>
        </description>
        <name>clientCurrencyValidator</name>
        <tag-class></tag-class>
        <body-content>JSP</body-content>
        <attribute>
            <description><![CDATA[The ISO4217 currency code, a three letter sequence like "USD".]]></description>
            <name>currency</name>
            <required>false</required>
            <deferred-value>
                <type>java.lang.String</type>
            </deferred-value>
        </attribute>
        <attribute>
            <description><![CDATA[The message to display if value is invalid.]]></description>
            <name>invalidMessage</name>
            <required>false</required>
            <deferred-value>
                <type>java.lang.String</type>
            </deferred-value>
        </attribute>
        <attribute>
            <description><![CDATA[Converts all characters to lowercase if true.  Defaults to false.]]></description>
            <name>lowercase</name>
            <required>false</required>
            <deferred-value>
                <type>boolean</type>
            </deferred-value>
        </attribute>
        <attribute>
            <description><![CDATA[A hint message to be displayed to the user when entering the text field.]]></description>
            <name>promptMessage</name>
            <required>false</required>
            <deferred-value>
                <type>java.lang.String</type>
            </deferred-value>
        </attribute>
        <attribute>
            <description><![CDATA[Converts the first character of each word to uppercase if true.  Defaults to false.]]></description>
            <name>propercase</name>
            <required>false</required>
            <deferred-value>
                <type>boolean</type>
            </deferred-value>
        </attribute>
        <attribute>
            <description><![CDATA[JavaScript regular expression string used to validate the input.]]></description>
            <name>regExp</name>
            <required>false</required>
            <deferred-value>
                <type>java.lang.String</type>
            </deferred-value>
        </attribute>
        <attribute>
            <description><![CDATA[If true, the field must be non-empty to pass client-side validation.]]></description>
            <name>required</name>
            <required>false</required>
            <deferred-value>
                <type>boolean</type>
            </deferred-value>
        </attribute>
        <attribute>
            <description><![CDATA[Converts all characters to uppercase if true. Defaults to false.]]></description>
            <name>uppercase</name>
            <required>false</required>
            <deferred-value>
                <type>boolean</type>
            </deferred-value>
        </attribute>
    </tag>

    <tag>
        <description>
            <![CDATA[<p>Applies client-side date validation behavior to a child <code>inputText</code> component.  Field
            will display a popup calendar when entered.</p>]]>
        </description>
        <name>clientDateValidator</name>
        <tag-class></tag-class>
        <body-content>JSP</body-content>
        <attribute>
            <description><![CDATA[The message to display if value is invalid.]]></description>
            <name>invalidMessage</name>
            <required>false</required>
            <deferred-value>
                <type>java.lang.String</type>
            </deferred-value>
        </attribute>
        <attribute>
            <description><![CDATA[Converts all characters to lowercase if true.  Defaults to false.]]></description>
            <name>lowercase</name>
            <required>false</required>
            <deferred-value>
                <type>boolean</type>
            </deferred-value>
        </attribute>
        <attribute>
            <description><![CDATA[A hint message to be displayed to the user when entering the text field.]]></description>
            <name>promptMessage</name>
            <required>false</required>
            <deferred-value>
                <type>java.lang.String</type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Converts the first character of each word to uppercase if true.  Defaults to false.]]>
            </description>
            <name>propercase</name>
            <required>false</required>
            <deferred-value>
                <type>boolean</type>
            </deferred-value>
        </attribute>
        <attribute>
            <description><![CDATA[JavaScript regular expression string used to validate the input.]]></description>
            <name>regExp</name>
            <required>false</required>
            <deferred-value>
                <type>java.lang.String</type>
            </deferred-value>
        </attribute>
        <attribute>
            <description><![CDATA[If true, the field must be non-empty to pass client-side validation.  Defaults to 
                false.]]>
            </description>
            <name>required</name>
            <required>false</required>
            <deferred-value>
                <type>boolean</type>
            </deferred-value>
        </attribute>
        <attribute>
            <description><![CDATA[Converts all characters to uppercase if true. Defaults to false.]]></description>
            <name>uppercase</name>
            <required>false</required>
            <deferred-value>
                <type>boolean</type>
            </deferred-value>
        </attribute>
    </tag>

    <tag>
        <description>
            <![CDATA[<p>Fires all client-side validators when a child component's onclick event is fired and suppresses
            propagation of the event if validation fails.</p>]]>
        </description>
        <name>validateAllOnClick</name>
        <tag-class></tag-class>
        <body-content>JSP</body-content>
    </tag>

    <tag>
        <description>
            <![CDATA[<p>Renders a gracefully degrading Ajax submit button.</p>
            
            <p>This button will submit the parent form using an Ajax request by default.  The component is progressively
            enhanced so that the submit will still function with a full page refresh if JavaScript is unavailable on the
            client.</p>  
            
            <p>The processing of the JSF component tree can be customized through use of the <code>processIds</code> 
            attribute.  By default only the button itself will be processed during the postback lifecycle.</p>  
            
            <p>The content to render is determined on the server side by using a <code>render</code> action in the flow 
            definition that processes the request.  When updating the existing page, the rendered content must be a 
            replacement for an existing identifiable DOM node in the page.</p>
            
            <p>The component is capable of driving transitions to another view with an Ajax request.  In that case, a 
            client-side redirect to the new view will occur so that browser history and normal back button behavior
            is still preserved.</p>]]>
        </description>
        <name>commandButton</name>
        <tag-class></tag-class>
        <body-content>JSP</body-content>
        <attribute>
            <description>
                <![CDATA[MethodExpression representing the application action to invoke
                when this component is activated by the user.  The expression
                must evaluate to a public method that takes no parameters, and
                returns an Object (the toString() of which is called to derive
                the logical outcome) which is passed to the flow definition 
                as the event to be signaled.  The most common usage pattern is to supply
                a literal String and handle any custom processing  of the event in the 
                flow definition.]]>
            </description>
            <name>
                action
            </name>
            <required>
                false
            </required>
            <deferred-method>
                <method-signature>
                    java.lang.Object action()
                </method-signature>
            </deferred-method>
        </attribute>
        <attribute>
            <description>
                <![CDATA[MethodExpression representing an action listener method that will be
                notified when this component is activated by the user.  The
                expression must evaluate to a public method that takes an
                ActionEvent parameter, with a return type of void.]]>
            </description>
            <name>
                actionListener
            </name>
            <required>
                false
            </required>
            <deferred-method>
                <method-signature>
                    void actionListener(javax.faces.event.ActionEvent)
                </method-signature>
            </deferred-method>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Controls whether the button will use an Ajax request or a normal form submit.  Default is true.]]>
            </description>
            <name>ajaxEnabled</name>
            <required>false</required>
            <deferred-value>
                <type>boolean</type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[The component identifier for this component.  This value must be
                unique within the closest parent component that is a naming
                container.]]>
            </description>
            <name>
                id
            </name>
            <required>
                false
            </required>
            <rtexprvalue>
                true
            </rtexprvalue>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Flag indicating that, if this component is activated by the user,
                notifications should be delivered to interested listeners and actions
                immediately (that is, during Apply Request Values phase) rather than
                waiting until Invoke Application phase.  This flag can also be 
                controlled through used of the <code>bind</code> attribute in the corresponding
                <code>transition</code> element in the flow definition.  Setting <code>bind="false"</code>
                on the <code>transition</code> is equivalent to setting <code>immediate="true"</code>]]>
            </description>
            <name>
                immediate
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    boolean
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Flag indicating whether or not this component should be rendered
                (during Render Response Phase), or processed on any subsequent
                form submit.  The default value for this property is true.]]>
            </description>
            <name>
                rendered
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    boolean
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[The current value of this component.  Controls the text that will be displayed on the button.]]>
            </description>
            <name>
                value
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.Object
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Access key that, when pressed, transfers focus
                to this element.]]>
            </description>
            <name>
                accesskey
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Alternate textual description of the
                element rendered by this component.]]>
            </description>
            <name>
                alt
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                The ValueExpression linking this component to a property in a backing bean
            </description>
            <name>
                binding
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    javax.faces.component.UIComponent
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Direction indication for text that does not inherit directionality.
                Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).]]>
            </description>
            <name>
                dir
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Flag indicating that this element must never receive focus or
                be included in a subsequent submit.  A value of false causes
                no attribute to be rendered, while a value of true causes the
                attribute to be rendered as disabled="disabled".]]>
            </description>
            <name>
                disabled
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    boolean
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Absolute or relative URL of the image
                to be displayed for this button.  If
                specified, this "input" element will be
                of type "image".  Otherwise, it will be
                of the type specified by the "type"
                property with a label specified by the
                "value" property.]]>
            </description>
            <name>
                image
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[A localized user presentable name for this component.]]>
            </description>
            <name>
                label
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Code describing the language used in the generated markup
                for this component.]]>
            </description>
            <name>
                lang
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Javascript code executed when this element loses focus.]]>
            </description>
            <name>
                onblur
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Javascript code executed when this element loses focus
                and its value has been modified since gaining focus.]]>
            </description>
            <name>
                onchange
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Javascript code executed when a pointer button is
                clicked over this element.]]>
            </description>
            <name>
                onclick
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Javascript code executed when a pointer button is
                double clicked over this element.]]>
            </description>
            <name>
                ondblclick
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Javascript code executed when this element receives focus.]]>
            </description>
            <name>
                onfocus
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Javascript code executed when a key is
                pressed down over this element.]]>
            </description>
            <name>
                onkeydown
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Javascript code executed when a key is
                pressed and released over this element.]]>
            </description>
            <name>
                onkeypress
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Javascript code executed when a key is
                released over this element.]]>
            </description>
            <name>
                onkeyup
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Javascript code executed when a pointer button is
                pressed down over this element.]]>
            </description>
            <name>
                onmousedown
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Javascript code executed when a pointer button is
                moved within this element.]]>
            </description>
            <name>
                onmousemove
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Javascript code executed when a pointer button is
                moved away from this element.]]>
            </description>
            <name>
                onmouseout
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Javascript code executed when a pointer button is
                moved onto this element.]]>
            </description>
            <name>
                onmouseover
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Javascript code executed when a pointer button is
                released over this element.]]>
            </description>
            <name>
                onmouseup
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Javascript code executed when text within this
                element is selected by the user.]]>
            </description>
            <name>
                onselect
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[A comma-delimited list of fully-qualified (i.e., formId:componentId) JSF clientIds for the
                components that should serve as the root node of a subtree to be processed by the JSF lifecycle.  If
                omitted, only the component itself will be processed.  May be set to a special value of 
                <code>"*"</code> if the entire component tree should be processed.]]>
            </description>
            <name>processIds</name>
            <required>false</required>
            <deferred-value>
                <type>java.lang.String</type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Flag indicating that this component will prohibit changes by
                the user.  The element may receive focus unless it has also
                been disabled.  A value of false causes
                no attribute to be rendered, while a value of true causes the
                attribute to be rendered as readonly="readonly".]]>
            </description>
            <name>
                readonly
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    boolean
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[CSS style(s) to be applied when this component is rendered.]]>
            </description>
            <name>
                style
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Space-separated list of CSS style class(es) to be applied when
                this element is rendered.  This value must be passed through
                as the "class" attribute on generated markup.]]>
            </description>
            <name>
                styleClass
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Position of this element in the tabbing order
                for the current document.  This value must be
                an integer between 0 and 32767.]]>
            </description>
            <name>
                tabindex
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Advisory title information about markup elements generated
                for this component.]]>
            </description>
            <name>
                title
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Type of button to create.  Valid values are "submit" and
                "reset".  If not specified, or not a valid value, the default
                value is "submit".]]>
            </description>
            <name>
                type
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
    </tag>

    <tag>
        <description>
            <![CDATA[<p>Renders a gracefully degrading Ajax link.</p>
            
            <p>This link will submit the parent form using an Ajax request by default.  The component is progressively
            enhanced so that the submit will still function with a full page refresh if JavaScript is unavailable on the
            client.  To achieve this, an HTML button will be rendered initially, and replaced with a JavaScript enhanced
            link.  The button is rendered with a special "progressiveLink" CSS class so that its look can be customized
            as desired.</p>  
            
            <p>The processing of the JSF component tree can be customized through use of the <code>processIds</code> 
            attribute.  By default only the button itself will be processed during the postback lifecycle.</p>  
            
            <p>The content to render is determined on the server side by using a <code>render</code> action in the flow 
            definition that processes the request.  When updating the existing page, the rendered content must be a 
            replacement for an existing identifiable DOM node in the page.</p>
            
            <p>The component is capable of driving transitions to another view with an Ajax request.  In that case, a 
            client-side redirect to the new view will occur so that browser history and normal back button behavior
            is still preserved.</p>]]>
        </description>
        <name>commandLink</name>
        <tag-class></tag-class>
        <body-content>JSP</body-content>
        <attribute>
            <description>
                <![CDATA[MethodExpression representing the application action to invoke
                when this component is activated by the user.  The expression
                must evaluate to a public method that takes no parameters, and
                returns an Object (the toString() of which is called to derive
                the logical outcome) which is passed to the flow definition 
                as the event to be signaled.  The most common usage pattern is to supply
                a literal String and handle any custom processing  of the event in the 
                flow definition.]]>
            </description>
            <name>
                action
            </name>
            <required>
                false
            </required>
            <deferred-method>
                <method-signature>
                    java.lang.Object action()
                </method-signature>
            </deferred-method>
        </attribute>
        <attribute>
            <description>
                <![CDATA[MethodExpression representing an action listener method that will be
                notified when this component is activated by the user.  The
                expression must evaluate to a public method that takes an
                ActionEvent parameter, with a return type of void.]]>
            </description>
            <name>
                actionListener
            </name>
            <required>
                false
            </required>
            <deferred-method>
                <method-signature>
                    void actionListener(javax.faces.event.ActionEvent)
                </method-signature>
            </deferred-method>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Controls whether the button will use an Ajax request or a normal form submit.  Default is true.]]>
            </description>
            <name>ajaxEnabled</name>
            <required>false</required>
            <deferred-value>
                <type>boolean</type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                The ValueExpression linking this component to a property in a backing bean
            </description>
            <name>
                binding
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    javax.faces.component.UIComponent
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[The component identifier for this component.  This value must be
                unique within the closest parent component that is a naming
                container.]]>
            </description>
            <name>
                id
            </name>
            <required>
                false
            </required>
            <rtexprvalue>
                true
            </rtexprvalue>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Flag indicating that, if this component is activated by the user,
                notifications should be delivered to interested listeners and actions
                immediately (that is, during Apply Request Values phase) rather than
                waiting until Invoke Application phase.  This flag can also be 
                controlled through used of the <code>bind</code> attribute in the corresponding
                <code>transition</code> element in the flow definition.  Setting <code>bind="false"</code>
                on the <code>transition</code> is equivalent to setting <code>immediate="true"</code>]]>
            </description>
            <name>
                immediate
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    boolean
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Flag indicating whether or not this component should be rendered
                (during Render Response Phase), or processed on any subsequent
                form submit.  The default value for this property is true.]]>
            </description>
            <name>
                rendered
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    boolean
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[The current value of this component.]]>
            </description>
            <name>
                value
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.Object
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Access key that, when pressed, transfers focus
                to this element.]]>
            </description>
            <name>
                accesskey
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[The character encoding of the resource designated
                by this hyperlink.]]>
            </description>
            <name>
                charset
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[The position and shape of the hot spot on the screen
                (for use in client-side image maps).]]>
            </description>
            <name>
                coords
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Direction indication for text that does not inherit directionality.
                Valid values are "LTR" (left-to-right) and "RTL" (right-to-left).]]>
            </description>
            <name>
                dir
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Flag indicating that this element must never
                receive focus or be included in a subsequent
                submit.]]>
            </description>
            <name>
                disabled
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    boolean
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[The language code of the resource designated
                by this hyperlink.]]>
            </description>
            <name>
                hreflang
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Code describing the language used in the generated markup
                for this component.]]>
            </description>
            <name>
                lang
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Javascript code executed when this element loses focus.]]>
            </description>
            <name>
                onblur
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Javascript code executed when a pointer button is
                clicked over this element.]]>
            </description>
            <name>
                onclick
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Javascript code executed when a pointer button is
                double clicked over this element.]]>
            </description>
            <name>
                ondblclick
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Javascript code executed when this element receives focus.]]>
            </description>
            <name>
                onfocus
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Javascript code executed when a key is
                pressed down over this element.]]>
            </description>
            <name>
                onkeydown
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Javascript code executed when a key is
                pressed and released over this element.]]>
            </description>
            <name>
                onkeypress
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Javascript code executed when a key is
                released over this element.]]>
            </description>
            <name>
                onkeyup
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Javascript code executed when a pointer button is
                pressed down over this element.]]>
            </description>
            <name>
                onmousedown
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Javascript code executed when a pointer button is
                moved within this element.]]>
            </description>
            <name>
                onmousemove
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Javascript code executed when a pointer button is
                moved away from this element.]]>
            </description>
            <name>
                onmouseout
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Javascript code executed when a pointer button is
                moved onto this element.]]>
            </description>
            <name>
                onmouseover
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Javascript code executed when a pointer button is
                released over this element.]]>
            </description>
            <name>
                onmouseup
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[A comma-delimited list of fully-qualified (i.e., formId:componentId) JSF clientIds for the
                components that should serve as the root node of a subtree to be processed by the JSF lifecycle.  If
                omitted, only the component itself will be processed.  May be set to a special value of 
                <code>"*"</code> if the entire component tree should be processed.]]>
            </description>
            <name>processIds</name>
            <required>false</required>
            <deferred-value>
                <type>java.lang.String</type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[The relationship from the current document
                to the anchor specified by this hyperlink.
                The value of this attribute is a space-separated
                list of link types.]]>
            </description>
            <name>
                rel
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[A reverse link from the anchor specified
                by this hyperlink to the current document.
                The value of this attribute is a space-separated
                list of link types.]]>
            </description>
            <name>
                rev
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[The shape of the hot spot on the screen
                (for use in client-side image maps).  Valid
                values are:  default (entire region); rect
                (rectangular region); circle (circular region);
                and poly (polygonal region).]]>
            </description>
            <name>
                shape
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[CSS style(s) to be applied when this component is rendered.]]>
            </description>
            <name>
                style
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Space-separated list of CSS style class(es) to be applied when
                this element is rendered.  This value must be passed through
                as the "class" attribute on generated markup.]]>
            </description>
            <name>
                styleClass
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Position of this element in the tabbing order
                for the current document.  This value must be
                an integer between 0 and 32767.]]>
            </description>
            <name>
                tabindex
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Name of a frame where the resource
                retrieved via this hyperlink is to
                be displayed.]]>
            </description>
            <name>
                target
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[Advisory title information about markup elements generated
                for this component.]]>
            </description>
            <name>
                title
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
        <attribute>
            <description>
                <![CDATA[The content type of the resource designated
                by this hyperlink.]]>
            </description>
            <name>
                type
            </name>
            <required>
                false
            </required>
            <deferred-value>
                <type>
                    java.lang.String
                </type>
            </deferred-value>
        </attribute>
    </tag>

    <tag>
        <description>
            <![CDATA[<p>Creates a JavaScript event listener for one of the child component's events that will trigger
            an Ajax submit of the parent form.</p>
            
            <p>The installed JavaScript listener will submit the parent form using an Ajax request.  This component is 
            purely JavaScript based and should only be used in an environment where the availability of JavaScript on 
            the client is not a concern.</p>  
            
            <p>The processing of the JSF component tree can be customized through use of the <code>processIds</code> 
            attribute.  By default only the button itself will be processed during the postback lifecycle.</p>  
            
            <p>The content to render is determined on the server side by using a <code>render</code> action in the flow 
            definition that processes the request.  When updating the existing page, the rendered content must be a 
            replacement for an existing identifiable DOM node in the page.</p>
            
            <p>The component is capable of driving transitions to another view with an Ajax request.  In that case, a 
            client-side redirect to the new view will occur so that browser history and normal back button behavior
            is still preserved.</p>]]>
        </description>
        <name>ajaxEvent</name>
        <tag-class></tag-class>
        <body-content>JSP</body-content>
        <attribute>
            <description>
                <![CDATA[MethodExpression representing the application action to invoke
                when this component is activated by the user.  The expression
                must evaluate to a public method that takes no parameters, and
                returns an Object (the toString() of which is called to derive
                the logical outcome) which is passed to the flow definition 
                as the event to be signaled.  The most common usage pattern is to supply
                a literal String and handle any custom processing  of the event in the 
                flow definition.]]>
            </description>
            <name>action</name>
            <required>false</required>
            <deferred-method>
                <method-signature>
                    java.lang.Object action()
                </method-signature>
            </deferred-method>
        </attribute>
        <attribute>
            <description><![CDATA[The event to listen to on the child component that will trigger the Ajax request.  For example,
                <code>event="onchange"</code> will fire an Ajax event when the child component's value changes.]]>
            </description>
            <name>event</name>
        </attribute>
        <attribute>
            <description>
                <![CDATA[A comma-delimited list of fully-qualified (i.e., formId:componentId) JSF clientIds for the
                components that should serve as the root node of a subtree to be processed by the JSF lifecycle.  If
                omitted, only the component itself will be processed.  May be set to a special value of 
                <code>"*"</code> if the entire component tree should be processed.]]>
            </description>
            <name>processIds</name>
            <required>false</required>
            <deferred-value>
                <type>java.lang.String</type>
            </deferred-value>
        </attribute>
    </tag>
        
</taglib>