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. 將新檢視作為對用戶端的響應。