h
Tag button


Render a button that does not cause an HTTP POST.

Encode Behavior

Render an HTML "input" element of type "button". The value of the component is rendered as the button text and the outcome of the component is used to determine the target URL which is activated by onclick. If "image" attribute is specified, render it as the value of the "src" attribute after passing it to the getResourceURL() method of the ViewHandler for this application, and passing the result through the encodeResourceURL() method of the ExternalContext.

If the component is not disabled, take the following actions.

Algorithm to obtain the url to which the user-agent should issue a GET request when clicked

Obtain the NavigationCase that corresponds to the component instance for this Renderer.

Obtain an instance of javax.faces.application.ConfigurableNavigationHandler from the ViewHandler. If no such instance can be obtained, write the "disabled" attribute on the button. Otherwise, let outcome be the result of calling getOutcome() on the argument component, which must be an instance of UIOutcomeTarget. If this result is null, let outcome be the viewId of the current UIViewRoot. Obtain a reference to the NavigationCase, called navCase for discussion. If the component has a non-null attribute named by the value of the symbolic constant javax.faces.event.ActionListener.TO_FLOW_DOCUMENT_ID_ATTR_NAME, let navCase be the return from calling getNavigationCase() on the ConfigurableNavigationHandler, passing the current FacesContext as the first argument, null, as the second argument, outcome as the third argument, and the value of the TO_FLOW_DOCUMENT_ID_ATTR_NAME attribute as the fourth argument. Otherwise, let navCase be the return from calling getNavigationCase() on the ConfigurableNavigationHandler, passing the current FacesContext as the first argument, null, as the second argument, and outcome as the third argument. If this returns null, log an informative error which includes the component id, and write the "disabled" attribute on the component markup, with the value of true. Otherwise obtain the encoded target URL using the following algorithm.

Algorithm to obtain the encoded target URL

The entire target URL string must be processed by a call to the encodeResourceURL() method of the ExternalContext. The name of the UIParameter goes on the left hand side, and the value of the UIParameter on the right hand side. The name and the value must be URLEncoded. Each UIParameter instance is separeted by an ampersand, as dictated in the URL spec. The final encoded result will be written out to the onclick attribute of the button as "window.location.href = ''". If the developer has specified a custom onlclick the window.location.href name/value pair will be appended at the end of the developer specified script. If the "fragment" attribute is specified, the value will be included at the end of the resulting URL preceded by a hash mark. If the "styleClass" attribute is specified, render its value as the value of the "class" attribute. If the "id" attribute is specified, follow the same steps as mentioned in the "General Notes on Encoding" regarding the "id" attribute for UIInput components. If the "disabled" attribute is specified, do not render the "onclick" element and assign the "disabled" attribute a value of true.

Because this renderer is responsible for rendering its own children, the renderer will decide if the end tag is required or not based on the presence or absence of children for the component.

To support entering flows that are defined by both a defining document id and a flow id, add a component attribute to this component whose name is given by the value of the symbolic constant javax.faces.event.ActionListener.TO_FLOW_DOCUMENT_ID_ATTR_NAME, and whose value is the defining document id. For example, when using this component in a facelet page, the following markup would cause such an attribute to be added.

<h:button id="start_a" value="enter flow-a" outcome="flow-a">
  <f:attribute name="to-flow-document-id" value="unique"/>
</h:button>


Tag Information
Tag Class.OutcomeTargetButtonTag
TagExtraInfo ClassNone
Body ContentJSP
Display NameNone

Attributes
NameRequiredRequest-timeTypeDescription
idfalsetruejava.lang.StringThe component identifier for this component. This value must be unique within the closest parent component that is a naming container.
includeViewParamsfalsefalsejavax.el.ValueExpression
(must evaluate to java.lang.Boolean)
Whether to include page parameters in the target URI.
outcomefalsefalsejavax.el.ValueExpression
(must evaluate to java.lang.String)
The logical outcome used to resolve a navigation case.
renderedfalsefalsejavax.el.ValueExpression
(must evaluate to boolean)
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.
valuefalsefalsejavax.el.ValueExpression
(must evaluate to java.lang.Object)
The current value of this component.
accesskeyfalsefalsejavax.el.ValueExpression
(must evaluate to java.lang.String)
Access key that, when pressed, transfers focus to this element.
altfalsefalsejavax.el.ValueExpression
(must evaluate to java.lang.String)
Alternate textual description of the element rendered by this component.
dirfalsefalsejavax.el.ValueExpression
(must evaluate to java.lang.String)
Direction indication for text that does not inherit directionality. Valid values are "LTR" (left-to-right) and "RTL" (right-to-left). These attributes are case sensitive when rendering to XHTML, so care must be taken to have the correct case.
disableClientWindowfalsefalsejavax.el.ValueExpression
(must evaluate to java.lang.Boolean)

Disable appending the ClientWindow on the rendering of this element.

fragmentfalsefalsejavax.el.ValueExpression
(must evaluate to java.lang.String)
The identifier of the page fragment which should be brought into focus when the target page is rendered. The value of this attribute is appended to the end of target URL following a hash (#) mark. This notation is part of the standard URL syntax.
imagefalsefalsejavax.el.ValueExpression
(must evaluate to java.lang.String)

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. Note that if the value of this attribute starts with "/", the rendered value for this attribute will be prefixed with the context-root for this application.

langfalsefalsejavax.el.ValueExpression
(must evaluate to java.lang.String)
Code describing the language used in the generated markup for this component.
onblurfalsefalsejavax.el.ValueExpression
(must evaluate to java.lang.String)
Javascript code executed when this element loses focus.
onclickfalsefalsejavax.el.ValueExpression
(must evaluate to java.lang.String)
Javascript code executed when a pointer button is clicked over this element.
ondblclickfalsefalsejavax.el.ValueExpression
(must evaluate to java.lang.String)
Javascript code executed when a pointer button is double clicked over this element.
onfocusfalsefalsejavax.el.ValueExpression
(must evaluate to java.lang.String)
Javascript code executed when this element receives focus.
onkeydownfalsefalsejavax.el.ValueExpression
(must evaluate to java.lang.String)
Javascript code executed when a key is pressed down over this element.
onkeypressfalsefalsejavax.el.ValueExpression
(must evaluate to java.lang.String)
Javascript code executed when a key is pressed and released over this element.
onkeyupfalsefalsejavax.el.ValueExpression
(must evaluate to java.lang.String)
Javascript code executed when a key is released over this element.
onmousedownfalsefalsejavax.el.ValueExpression
(must evaluate to java.lang.String)
Javascript code executed when a pointer button is pressed down over this element.
onmousemovefalsefalsejavax.el.ValueExpression
(must evaluate to java.lang.String)
Javascript code executed when a pointer button is moved within this element.
onmouseoutfalsefalsejavax.el.ValueExpression
(must evaluate to java.lang.String)
Javascript code executed when a pointer button is moved away from this element.
onmouseoverfalsefalsejavax.el.ValueExpression
(must evaluate to java.lang.String)
Javascript code executed when a pointer button is moved onto this element.
onmouseupfalsefalsejavax.el.ValueExpression
(must evaluate to java.lang.String)
Javascript code executed when a pointer button is released over this element.
rolefalsefalsejavax.el.ValueExpression
(must evaluate to java.lang.String)

Per the WAI-ARIA spec and its relationship to HTML5 (Section title ARIA Role Attriubute), every HTML element may have a "role" attribute whose value must be passed through unmodified on the element on which it is declared in the final rendered markup. The attribute, if specified, must have a value that is a string literal that is, or an EL Expression that evaluates to, a set of space-separated tokens representing the various WAI-ARIA roles that the element belongs to.

It is the page author's responsibility to ensure that the user agent is capable of correctly interpreting the value of this attribute.

stylefalsefalsejavax.el.ValueExpression
(must evaluate to java.lang.String)
CSS style(s) to be applied when this component is rendered.
styleClassfalsefalsejavax.el.ValueExpression
(must evaluate to java.lang.String)
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.
tabindexfalsefalsejavax.el.ValueExpression
(must evaluate to java.lang.String)
Position of this element in the tabbing order for the current document. This value must be an integer between 0 and 32767.
titlefalsefalsejavax.el.ValueExpression
(must evaluate to java.lang.String)
Advisory title information about markup elements generated for this component.
bindingfalsefalsejavax.el.ValueExpression
(must evaluate to javax.faces.component.UIComponent)
The ValueExpression linking this component to a property in a backing bean

Variables
No Variables Defined.