Facelets是一種輕量級的頁面聲明語言,用于使用HTML樣式構(gòu)建JSF(JavaServer Faces)視圖。
它包括以下功能:
優(yōu)點
JSF(JavaServer Faces)技術(shù)支持各種標簽庫,以將組件添加到網(wǎng)頁。 為了支持JavaServer Faces標簽庫機制,F(xiàn)acelets使用XML命名空間聲明。
下表顯示了Facelets支持的標簽庫。
標簽庫 | URI | 前綴 | 示例 | 內(nèi)容 |
---|---|---|---|---|
JSF Facelets標簽庫 | http://xmlns.jcp.org/jsf/facelets | ui: |
ui:component ,ui: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友好標記的標簽 |
復(fù)合組件標簽庫 | http://xmlns.jcp.org/jsf/composite | cc: |
cc:interface |
支持復(fù)合組件的標簽 |
JSTL核心標簽庫 | http://xmlns.jcp.org/jsp/jstl/core | c: |
c:forEach , c:catch |
JSTL 1.2核心標簽 |
JSTL函數(shù)標簽庫 | http://xmlns.jcp.org/jsp/jstl/functions | fn: |
fn:toUpperCase , fn:toLowerCase |
JSTL 1.2函數(shù)標簽 |
JSF規(guī)范定義了JavaServer Faces應(yīng)用程序的生命周期。以下步驟為基于 Facelets 的應(yīng)用程序的過程描述。
生命周期是在客戶端使用Facelets
創(chuàng)建的網(wǎng)頁發(fā)出新請求時啟動。 JSF創(chuàng)建一個新的組件樹或javax.faces.component.UIViewRoot
并放入FacesContex
。
如果可用的UIViewRoot
應(yīng)用于Facelets
, 視圖可以填充組件進行渲染。
新建的視圖作為對客戶端的響應(yīng)而被渲染。
在渲染時,存儲此視圖的狀態(tài)用于下一個請求。 存儲輸入組件和表單數(shù)據(jù)的狀態(tài)。
客戶端可以與視圖交互,并從JSF應(yīng)用程序請求另一個視圖。 此時,保存的視圖從存儲狀態(tài)恢復(fù)。
恢復(fù)視圖再次通過JSF生命周期,如果沒有驗證問題,并且沒有觸發(fā)任何操作,最終將生成新視圖或重新呈現(xiàn)當前視圖。
如果請求相同的視圖,則再次呈現(xiàn)存儲的視圖。
如果要求新視圖,則繼續(xù)執(zhí)行【步驟2】。
將新視圖作為對客戶端的響應(yīng)。