ADF

What is an impact of “immediate” attribute either for UICommand and UIInput behaviour? ADF Faces Page lifecycle.

In ADF development we face immediate attribute for a button quite frequently. Sometimes developers do not clearly understand what the meaning and impact for action behaviour it cause. Actually this attribute makes sense not just for UICommand (buttons), but for UIInput (input fields) as well. And by the way, its not an ADF invention, it comes from JSF (Apache MyFaces) framework. So lets clarify here what an impact has immediate attribute either for UICommand and UIInput components. First lets get acquaintanced with JSF Page lifecycle:

Just to be aware – ADF lifecycle is an extended JSF lifecycle. But for defining immediate behaviour its enough to know JSF lifecycle phases.

Buttons

immediate=”false” immediate=”true”
UIInput
(<af:inputText/>)
  • Value is validated in Process Validations phase
  • Error is not shown If there are any components in the form marked as immediate and they have validation errors
  • Value is validated in Apply Request Values phase
  • On validation errors jump directly to Render Response phase. If there are any validation errors in the components marked as not immediate, they are just skipped.
UICommand
(<af:button/>)
  •  Action Listener or Action Method is executed in the Invoke Application phase. This means that all input validations are already processed and model (i.e. backing bean) is updated.
  • Action Listener or Action Method is executed in the end of Apply Request Values phase. This results into skipping of any not immediate value validations.
  • In a navigational Action Method case, jump straight to Render Response phase. It usually fits for cancel actions very well.

For more information please refer to Apache MyFaces documentation.

Very valuable ADF oriented presentation about ADF Faces Page Lifecycle by Steven Davelaar.

About Danas Tarnauskas