It is a light weight page declaration language which is used to build JavaServer Faces views using HTML style.
It includes the following features:
- It uses XHTML for creating web pages.
- It supports Facelets tag libraries in addition to JavaServer Faces and JSTL tag libraries.
- It supports the Expression Language (EL).
- It uses templating for components and pages.
- It supports code reusabilty through templating and composite components.
- It provides functional extensibility of components and other server-side objects through customization.
- Faster compilation time.
- It validates expression language at compile-time.
- High-performance rendering.
JavaServer Faces technology supports various tag libraries to add components to a web page. To support the JavaServer Faces tag library mechanism, Facelets uses XML namespace declarations.
The following table shows tag libraries supported by Facelets.
|JavaServer Faces Facelets Tag Library||http://xmlns.jcp.org/jsf/facelets||ui:||ui:componentui:insert||Tags for templating|
|JavaServer Faces HTML Tag Library||http://xmlns.jcp.org/jsf/html||h:||h:headh:bodyh:outputTexth:inputText||JavaServer Faces component tags for all UIComponent objects|
|JavaServer Faces Core Tag Library||http://xmlns.jcp.org/jsf/core||f:||f:actionListenerf:attribute||Tags for JavaServer Faces custom actions that are independent of any particular render kit|
|Pass-through Elements Tag Library||http://xmlns.jcp.org/jsf||jsf:||jsf:id||Tags to support HTML5-friendly markup|
|Pass-through Attributes Tag Library||http://xmlns.jcp.org/jsf/passthrough||p:||p:type||Tags to support HTML5-friendly markup|
|Composite Component Tag Library||http://xmlns.jcp.org/jsf/composite||cc:||cc:interface||Tags to support composite components|
|JSTL Core Tag Library||http://xmlns.jcp.org/jsp/jstl/core||c:||c:forEachc:catch||JSTL 1.2 Core Tags|
|JSTL Functions Tag Library||http://xmlns.jcp.org/jsp/jstl/functions||fn:||fn:toUpperCasefn:toLowerCase||JSTL 1.2 Functions Tags|
# The Lifecycle of a Facelets Application
The JavaServer Faces specification defines the lifecycle of a JavaServer Faces application. The following steps describe that process to a Facelets-based application.
1) Lifecycle starts when a client makes a new request for a web page which is created using Facelets. JSF creates a new component tree or javax.faces.component.UIViewRoot and placed into the FacesContex.
2) View is ready to populate with components for rendering. The UIViewRoot if available is applied to the Facelets.
3) The newly built view is rendered back as a response to the client.
4) On rendering, the state of this view is stored for the next request. The state of input components and form data is stored.
5) The client may interact with the view and request another view from the JavaServer Faces application. At this time, the saved view is restored from the stored state.
6) The restored view is once again passed through the JavaServer Faces lifecycle, which eventually will either generate a new view or re-render the current view if there were no validation problems and no action was triggered.
7) If the same view is requested, the stored view is rendered once again.
8) If a new view is requested, the Step 2 is continued.
9) New view is rendered back as a response to the client.