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