The JSF life cycle contains 6 phases, which are:
- Restore view
- Apply query values
- Process check
- Update Model Values
- Call application
- Refuse answer
If the command button has immediate="true" , then the phases "Process Checks" and "Update Model Values" are skipped. Consequently, conversions and validations are not processed, and attributes in the managed bean are not updated.
However, if the UIInput in the form also has an immediate value = "true", then its value will be converted, checked, and updated in the managed bean, because this will happen in the "Apply Requests" phase.
One example of when you can use the button with immediate = true is the Cancel button.
source share