Chuleta de las fases de JSF y uso de ‘immediate’ y ‘bypassUpdates‘:
JSF tiene 6 fases:
- Restore View – Crea o restaura la página anterior.
- Apply Request Values – Pasa los valores introducidos en la página a valores en el request.
- Process Validations – Hace las conversiones y validaciones de los valores introducidos y hace el ‘submit’ si son válidos.
- Update Model Values – Pone los valores introducidos en los “backing bean”.
- Invoke Application – Ejecuta los “actionListeners” y los “actions”.
- Render Response – Devuelve el “response”
Si se pone “immediate=true”, se salta las fases 3-5. Esto se suele usar para los botones cancelar de los formularios, ya que no quieres forzar que los valores introducidos sean correctos si estas cancelando la acción
Si se pone “bypassUpdates=true”, se salta las fases 4-5, las validaciones se ejecutan. Un ejemplo es un botón que valida si el email introducido no existe ya como nombre de usuario. No se quiere guardar el valor y hacer el submit del formulario, solo se quieren ejecutar las validaciones.
Los actionListener se ejecutan en la fase de validación