background image

The immediate Attribute

<< UI Component Tag Attributes | The style and styleClass Attributes >>
<< UI Component Tag Attributes | The style and styleClass Attributes >>

The immediate Attribute

The immediate Attribute
UIInput
components and command components (those that implement ActionSource, such
as buttons and hyperlinks) can set the immediate attribute to true to force events, validations,
and conversions to be processed during the apply request values phase of the life cycle. Page
authors need to carefully consider how the combination of an input component's immediate
value and a command component's immediate value determines what happens when the
command component is activated.
Assume that you have a page with a button and a field for entering the quantity of a book in a
shopping cart. If both the button's and the field's immediate attributes are set to true, the new
value of the field will be available for any processing associated with the event that is generated
when the button is clicked. The event associated with the button and the event, validation, and
conversion associated with the field are all handled during the apply request values phase.
If the button's immediate attribute is set to true but the field's immediate attribute is set to
false
, the event associated with the button is processed without updating the field's local value
to the model layer. This is because any events, conversion, or validation associated with the field
occurs during its usual phases of the life cycle, which come after the apply request values phase.
The bookshowcart.jsp page of the Duke's Bookstore application has examples of components
using the immediate attribute to control which component's data is updated when certain
buttons are clicked. The quantity field for each book has its immediate attribute set to false.
(The quantity fields are generated by the UIData component. See
"Using Data-Bound Table
Components" on page 337
, for more information.) The immediate attribute of the Continue
Shopping hyperlink is set to true. The immediate attribute of the Update Quantities hyperlink
is set to false.
If you click the Continue Shopping hyperlink, none of the changes entered into the quantity
input fields will be processed. If you click the Update Quantities hyperlink, the values in the
quantity fields will be updated in the shopping cart.
The rendered Attribute
A component tag uses a Boolean JavaServer Faces expression language (EL) expression, along
with the rendered attribute, to determine whether or not the component will be rendered. For
example, the check commandLink component on the bookcatalog.jsp page is not rendered if
the cart contains no items:
<h:commandLink id=
"check"
...
rendered=
"#{cart.numberOfItems > 0}">
<h:outputText
value=
"#{bundle.CartCheck}"/>
</h:commandLink>
Adding UI Components to a Page Using the HTML Component Tags
The Java EE 5 Tutorial · September 2007
328