Compositions are the core unifying idea of Facelets and the foundation of its reusability. Facelets treats view documents as a set of instructions for composing a tree of
UIComponent instances (aka a Faces view). It can compose a
UIComponent tree from either a single view document or multiple view documents. As its name implies, the
ui:composition tag plays a key role in this framework—each
ui:composition tag marks the start of a branch of
UIComponent instances. There are several ways that you can use this tag. For example, it can define content that is included in another view, as shown in Example 8 in Chapter 3. Developing JSF Views with Facelets. Example 8 included views for each of the major sections of the page: header, left navigation, center content, right sidebar, and footer. Example 28 and Example 29 contain code fragments that demonstrate using the
ui:composition tag in this way.
Example 28. Including a composition
<!-- including-view.xhtml --> <div id="left-navigation"> <ui:include src="included-view.xhtml"/> </div> <!-- included-view.xhtml --> <ui:composition> <!-- left navigation content --> </ui:composition>
In this example, the reusable content is in the included document. Facelets trims all tags and text outside of the
ui:composition tag in the included document.
A template client also can use the
ui:composition tag to weave in reusable content from a template document. Example 13 ...