Documentation



Java Platform, Enterprise Edition: The Java EE Tutorial

8.1 What Is Facelets?

Facelets is a powerful but lightweight page declaration language that is used to build JavaServer Faces views using HTML style templates and to build component trees. Facelets features include the following:

  • Use of XHTML for creating web pages

  • Support for Facelets tag libraries in addition to JavaServer Faces and JSTL tag libraries

  • Support for the Expression Language (EL)

  • Templating for components and pages

The advantages of Facelets for large-scale development projects include the following:

  • Support for code reuse through templating and composite components

  • Functional extensibility of components and other server-side objects through customization

  • Faster compilation time

  • Compile-time EL validation

  • High-performance rendering

In short, the use of Facelets reduces the time and effort that needs to be spent on development and deployment.

Facelets views are usually created as XHTML pages. JavaServer Faces implementations support XHTML pages created in conformance with the XHTML Transitional Document Type Definition (DTD), as listed at http://www.w3.org/TR/xhtml1/#a_dtd_XHTML-1.0-Transitional. By convention, web pages built with XHTML have an .xhtml extension.

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. Table 8-1 lists the tag libraries supported by Facelets.

Table 8-1 Tag Libraries Supported by Facelets

Tag Library URI Prefix Example Contents

JavaServer Faces Facelets Tag Library

http://xmlns.jcp.org/jsf/facelets

ui:

ui:component

ui:insert

Tags for templating

JavaServer Faces HTML Tag Library

http://xmlns.jcp.org/jsf/html

h:

h:head

h:body

h:outputText

h:inputText

JavaServer Faces component tags for all UIComponent objects

JavaServer Faces Core Tag Library

http://xmlns.jcp.org/jsf/core

f:

f:actionListener

f: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:forEach

c:catch

JSTL 1.2 Core Tags

JSTL Functions Tag Library

http://xmlns.jcp.org/jsp/jstl/functions

fn:

fn:toUpperCase

fn:toLowerCase

JSTL 1.2 Functions Tags


Facelets provides two namespaces to support HTML5-friendly markup. For details, see HTML5-Friendly Markup.

Facelets supports tags for composite components, for which you can declare custom prefixes. For more information on composite components, see Composite Components.

The namespace prefixes shown in the table are conventional, not mandatory. As is always the case when you declare an XML namespace, you can specify any prefix in your Facelets page. For example, you can declare the prefix for the composite component tag library as

xmlns:composite="http://java.sun.com/jsf/composite"

instead of as

xmlns:cc="http://java.sun.com/jsf/composite"

Based on the JavaServer Faces support for Expression Language (EL) syntax, Facelets uses EL expressions to reference properties and methods of managed beans. EL expressions can be used to bind component objects or values to methods or properties of managed beans that are used as backing beans. For more information on using EL expressions, see Using the EL to Reference Managed Beans.

Close Window

Table of Contents

Java Platform, Enterprise Edition: The Java EE Tutorial

Expand | Collapse