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