JSF Facelets技術介紹

Facelets是一種輕量級的頁面聲明語言,用於使用HTML樣式構建JSF(JavaServer Faces)視圖。

它包括以下功能:

  • 它使用XHTML創建網頁。
  • 除了支持JavaServer Faces和JSTL標記庫之外,它還支持Facelets標籤庫。
  • 它支持表達語言(EL)。
  • 它是使用組件和頁面的模板。

優點

  • 它通過模板和複合組件支持代碼可重用性。
  • 它通過定製提供組件和其他服務器端對象的功能可擴展性。
  • 編譯時間更快
  • 它在編譯時驗證表達式語言。
  • 高性能渲染能力。

JSF(JavaServer Faces)技術支持各種標籤庫,以將組件添加到網頁。 爲了支持JavaServer Faces標籤庫機制,Facelets使用XML命名空間聲明。

下表顯示了Facelets支持的標籤庫。

標籤庫

URI

前綴

示例

內容

JSF Facelets標籤庫

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

ui:

ui:componentui:insert

模板標籤

JSF HTML標籤庫

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

h:

h:head,h:body

所有UI組件對象的JavaServer Faces組件標記

JSF核心標籤庫

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

f:

f:actionListener, f:attribute

JSF標籤獨立於任何特定渲染工具包的自定義操作

傳遞元素標籤庫

http://xmlns.jcp.org/jsf

jsf:

jsf:id

支持HTML5友好標記的標籤

傳遞屬性標籤庫

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

p:

p:type

支持HTML5友好標記的標籤

複合組件標籤庫

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

cc:

cc:interface

支持複合組件的標籤

JSTL核心標籤庫

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

c:

c:forEach, c:catch

JSTL 1.2核心標籤

JSTL函數標籤庫

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

fn:

fn:toUpperCase, fn:toLowerCase

JSTL 1.2函數標籤

Facelets應用程序的生命週期

JSF規範定義了JavaServer Faces應用程序的生命週期。以下步驟爲基於 Facelets 的應用程序的過程描述。

  1. 生命週期是在客戶端使用Facelets創建的網頁發出新請求時啓動。 JSF創建一個新的組件樹或javax.faces.component.UIViewRoot並放入FacesContex

  2. 如果可用的UIViewRoot應用於Facelets, 視圖可以填充組件進行渲染。

  3. 新建的視圖作爲對客戶端的響應而被渲染。

  4. 在渲染時,存儲此視圖的狀態用於下一個請求。 存儲輸入組件和表單數據的狀態。

  5. 客戶端可以與視圖交互,並從JSF應用程序請求另一個視圖。 此時,保存的視圖從存儲狀態恢復。

  6. 恢復視圖再次通過JSF生命週期,如果沒有驗證問題,並且沒有觸發任何操作,最終將生成新視圖或重新呈現當前視圖。

  7. 如果請求相同的視圖,則再次呈現存儲的視圖。

  8. 如果要求新視圖,則繼續執行【步驟2】。

  9. 將新視圖作爲對客戶端的響應。