Facelets 是建構在 JSF 標準之上的視圖處理框架,不依賴 JSP 技術,直接編譯為 JSF 組件樹。支援 JSF 1.1/1.2(Sun RI、MyFaces),是 JSF 2.0 內建預設視圖技術(VDL)。
| # | 特性 | 說明 |
|---|---|---|
| 1 | 標準相容 | 支援 Sun RI / Apache MyFaces 所有 JSF 組件 |
| 2 | 零重複開發 | 現有 JSF 組件直接可用,無需重寫 Tag |
| 3 | 模板化 | 頁面與組件模板化,ui:composition/ui:decorate |
| 4 | 多檔案組合 | 一棵組件樹可跨多個 .xhtml 檔案定義 |
| 5 | 精準錯誤報告 | 錯誤定位至標籤、屬性、行號 |
| 6 | 分散式標籤庫 | 標籤定義可跨 Jar 包 |
| 7 | 完整 EL 支援 | 含函數表達式 |
| 8 | 編譯期 EL 驗證 | 部署前發現語法錯誤 |
| 9 | 零 XML 配置 | 無需額外 XML 設定檔 |
| 10 | jsfc 屬性 | <input jsfc="h:inputText" /> 編譯期轉換為 JSF 組件 |
| 11 | 設計師友善 | 純 HTML 原型可直接轉換為 JSF 頁面 |
| 12 | 渲染器相容 | 支援所有 JSF RenderKit |
| 13 | 非 Web 容器依賴 | API 可獨立單元測試 |
<!-- template.xhtml -->
<html xmlns="https://www.w3.org/1999/xhtml"
xmlns:ui="https://java.sun.com/jsf/facelets">
<body>
<ui:insert name="header" />
<ui:insert name="content" />
<ui:insert name="footer" />
</body>
</html>
<!-- page.xhtml -->
<ui:composition template="template.xhtml">
<ui:define name="content">...</ui:define>
</ui:composition>
JSF 1.2 專案強烈建議遷移至 Facelets:移除 JSP 編譯開銷、獲得更佳錯誤訊息、支援現代模板機制、為 JSF 2.0 升級鋪路。