Life Cycle Overview
When a request come in the Faces Servlet goes through a set series of steps. These steps are called the Life Cycle. A lot of the magic of JSF happens here. Here is an English version.
A request come in that activates the Faces Servlet.
Usually a session is either identified or created.
A Component Tree is created for the page that was requested.
Often date from a backing bean fills some components with default data.
A page is rendered and a response is sent.
When the client submits the form, it will come back to the same URL. The session is identified and the Component tree is rebuild.
Data from the request is inserted into the component tree. If any of the data fails to convert to the appropriate type (integer, data, currency, etc.) in the backing bean errors are generated and the page is rendered and sent back to the user. No fuss, no bother.
If all the data converts, then the tree is traversed and any validators have their shot. If any data fails the validation test, the same page is regenerated with appropriate error messages and a response is sent. Again no fuss, no bother.
If the all the data validates, the backing bean(s) are updated. Errors can happen here too, and if they do the page is regenerated with error messages and sent back to the user.
If the data converts, validates, and goes into the backing bean(s), an application method the developer wrote is activated and work actually takes place.
A short string response from the application method is fed to the navigation system and the Faces Servlet decides what page to generate next.