Facelet ile bir şablon yapılması ve o şablondan birden fazla sayfa üretilmesi mümkündür. Facelet'te şablon yapılması için normal bir XHTML sayfası yapılması ve boş olarak tanımlanan (şablonu kullanacak olan sayfanın girmesi gerektiği bölge) bölgeler ui:insert elementi ile işaretlenmesi gerekir. Örneğin aşağıda bir şablon gözükmektedir :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets"> <title>Sablon Test</title> <body> Burasi Sablon <ui:insert name="Body" /> </body> </html>
Yukarıdaki normal sayfadan tek farkı ui:insert elementinin eklenmiş olmasıdır. Yukarıdaki şablon bir sayfada aşağıdaki gibi kullanılabilir :
<ui:composition template="/template.xhtml" xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"> <ui:define name="Body"> <h1>Body Content</h1> </ui:define> </ui:composition>
Şablon kullanmak isteyen bir sayfa ui:composition ile başlaması gerekmektedir. Bu element ile birlikte verilen şablonun path'i template="" şeklinde verilir. Şablonda belirtilen (insert elementi ile) bölgelere ui:define ile elementi set edilirler. Yukarıdaki örnekte görüldüğü gibi Body ile tanımlanmış insert elementinin yerine <h1> Body Content </h1> içeriği eklenmiştir. Sayfa gösterildiği zaman şablon sayfası yüklenecek ve Body olarak tanımlanan bölgesine <h1> Body Content </h1> içeriği yerleştirilecektir.