Binding Components to Data
The magic in JSF starts with the phrase "#{user.name} in the component declaration <h:inputText value="#{user.name}"/>
1. The "#{" indicates that JSF is to activate its Expression Language (EL). This is very similar to the JSTL Expression Language. JSF uses the "#" sign to distinguish it's EL from JSTL EL. (JSTL uses "$".)
2. The phrase "user.name" tells the JSF Servlet to look for a backing bean with the designated name of "user." When the Component Tree is first built, JSF performs a method call user.getName() and puts that value into the generated HTML.
3. When the user sends new data back (assuming the data is valid), JSF performs a user.setName({newData}) call and updates the backing bean with the new data.
4. The first time JSF sees the designation "user", it goes to its configuration files and looks "user" up. If the bean does not exist, it creates a new one for this client.