自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Facelets非常適合JSF組件

開(kāi)發(fā) 后端
本文介紹Facelets與JSF組件,包括Facelets 模板框架和從Tiles到Facelets等。

由于最近在 Java™ 服務(wù)器外觀(JSF)項(xiàng)目上工作,我很有幸第一次使用了 Facelets。關(guān)于 Facelets,我最喜歡的是它讓我可以創(chuàng)建可重用的復(fù)合組件。能夠拿出一個(gè)頁(yè)面(例如 JSP)并把它變成組件,對(duì)于我的 JSF 開(kāi)發(fā)來(lái)說(shuō)真是莫大的好處。我的結(jié)論是什么?如果不用 Facelets,那么就無(wú)法得到能從 JSF 獲得的最大收獲。

JSF 和 Java 服務(wù)器頁(yè)面技術(shù)之間的不匹配,是 JSF 開(kāi)發(fā)中的一個(gè)嚴(yán)重問(wèn)題。問(wèn)題是如何把 JSP 的動(dòng)態(tài)內(nèi)容集成到 JSF 基于組件的模型中。JSP 非常重視生成動(dòng)態(tài)內(nèi)容輸出,而 JSF 需要 JSP 來(lái)協(xié)調(diào)組件模型的構(gòu)建。因?yàn)檫@個(gè)任務(wù)超出了 JSP 原來(lái)的目的,所以產(chǎn)生了距離。

大多數(shù) JSF 開(kāi)發(fā)人員只是學(xué)會(huì)了一事一議地解決這類問(wèn)題,但是這就像在錘子上放一個(gè)枕頭,最終還會(huì)掉下來(lái)打傷腦袋。Facelets 是更加全面的解決方案:專為 JSF 組件模型度身定制的模板化語(yǔ)言。

Facelets 有以下吸引人的特性:


◆模板化(像 Tiles)
◆復(fù)合組件
◆定制的邏輯標(biāo)記
◆表達(dá)式語(yǔ)言
◆對(duì)設(shè)計(jì)師友好的頁(yè)面開(kāi)發(fā)
◆創(chuàng)建組件庫(kù)

這些特性比我想像的要更相關(guān)和統(tǒng)一。在這篇文章中,我討論前兩個(gè):模板化和復(fù)合組件。我使用的 Web 應(yīng)用程序基于為我的針對(duì)懷疑者的 JSF 系列開(kāi)發(fā)的一個(gè)應(yīng)用程序,我把它更新成使用 Facelets 視圖而不是 Tiles。在進(jìn)一步閱讀之前,應(yīng)當(dāng) 下載示例代碼。如果要隨著討論一起操作,還需要 安裝 Facelets。

Facelets 概述

對(duì)于 Facelets 可能會(huì)做的最大一個(gè)錯(cuò)誤假設(shè),就是它只是 Tiles 的替代品。Facelets 遠(yuǎn)不止如此:它是思考 JSF 的新方式。

更多組件概念

所有 JSF 組件的基類是 UIComponent。在開(kāi)發(fā)自己的組件時(shí),需要繼承 UIComponentBase,它擴(kuò)展了 UIComponent 并提供了 UIComponent 中所有抽象方法的默認(rèn)實(shí)現(xiàn)。

組件擁有雙親和標(biāo)識(shí)符。每個(gè)組件都關(guān)聯(lián)著一個(gè)組件類型,組件類型用于在 face 的上下文配置文件(faces-config.xml)中登記組件。可以用 JSF-EL (表達(dá)式語(yǔ)言)把 JSF 組件綁定到受管理的 bean 屬性??梢园驯磉_(dá)式關(guān)聯(lián)到組件上的任何屬性,這樣就允許用 JSF-EL 設(shè)置組件的屬性值。在創(chuàng)建使用 JSF-EL 綁定的組件屬性時(shí),需要?jiǎng)?chuàng)建值綁定表達(dá)式。在調(diào)用綁定屬性的 getter 方法時(shí),除非 setter 方法已經(jīng)設(shè)置了值,否則 getter 方法必須用值綁定獲得值。

組件可以作為 ValueHolder 或 EditableValueHolder。ValueHolder 與一個(gè)或多個(gè) Validator 和 Converter 相關(guān)聯(lián);所以 JSF UI 組件也與 Validator 和 Converter 關(guān)聯(lián)(請(qǐng)參閱 參考資料 獲得更多關(guān)于 JSF 驗(yàn)證和轉(zhuǎn)換的內(nèi)容。)

像表單字段組件這樣的組件擁有一個(gè) ValueBinding,它必須綁定到 JavaBean 的讀寫屬性。組件可以調(diào)用 getParent 方法訪問(wèn)它們的雙親,也可以調(diào)用 getChildren 方法訪問(wèn)它們的子女。組件也可以有 facet 組件,facet 組件是當(dāng)前組件的子組件,可以調(diào)用 getFacets 方法訪問(wèn)它,這個(gè)方法返回一個(gè)映射。Facets 是著名的子組件。

JSP 是種生成 servlet 的模板化語(yǔ)言。JSP 的主體與 servlet 的 doGet() 和 doPost() 方法等價(jià)(也就是說(shuō),成為 jspService() 方法)。JSF 定制標(biāo)記(例如 f:view 和 h:form)只是調(diào)用 JSF 組件來(lái)呈現(xiàn)它們自己的當(dāng)前狀態(tài)。JSF 組件模型的生命周期獨(dú)立于 JSP 生成的 servlet 的生命周期。這種獨(dú)立性就是混淆的來(lái)源。

與 JSP 不同,F(xiàn)acelets 這個(gè)模板化語(yǔ)言,從構(gòu)建之初,就考慮了 JSF 的組件生命周期。使用 Facelets,生成的模板會(huì)構(gòu)建組件樹(shù),而不是 servlet。這就允許更好的重用,因?yàn)榭梢园呀M件組合成另一個(gè)組件。

Facelets 減少了編寫定制標(biāo)記才能使用 JSF 的需求。Facelets 本身就可以使用 JSF 定制組件。溝通 JSF 和 Facelets 只需要很少的特殊編碼:要做的全部工作就是在 Facelet 標(biāo)記庫(kù)文件中聲明 JSF 組件。在 Facelets 模板化語(yǔ)言中可以直接使用 JSF 組件,不用任何額外的開(kāi)發(fā)。

Facelets 模板框架

在提供針對(duì)組件構(gòu)建設(shè)計(jì)的模板框架方面,F(xiàn)acelets 與 Tapestry (請(qǐng)參閱 參考資料)類似。但是,對(duì)于具有 JSP 背景的我們來(lái)說(shuō),F(xiàn)acelets 看起來(lái)比 Tapestry 友好得多。它允許使用熟悉的 JSTL 樣式的標(biāo)記和 JSTL/JSF/JSP 樣式的表達(dá)式語(yǔ)言。大大降低的學(xué)習(xí)曲線意味著可以更加迅速地開(kāi)始開(kāi)發(fā)。

Facelets 允許定義能夠直接包含進(jìn)頁(yè)面或者容易地添加到 Facelet 標(biāo)記庫(kù)的組件集。實(shí)際上讓人高興的是在 Facelets 中定義定制標(biāo)記(復(fù)合組件和類似 JSP 定制標(biāo)記的標(biāo)記)的迅速。使用這些組件集,F(xiàn)acelets 還允許定義站點(diǎn)模板(和更小的模板)。這與使用 Tiles 很相似,但是少了定義文件。也可以在定制 JSF 組件內(nèi)部使用 Facelets,因?yàn)?Facelets API 提供了可以容易地與 JSF 組件集成的接口。

從 Tiles 到 Facelets

如前所述,在這里使用的示例 Web 應(yīng)用程序基于為我的 針對(duì)懷疑者的 JSF 系列創(chuàng)建的示例。它為一家在線 CD 店管理庫(kù)存,創(chuàng)建、讀取、更新和刪除(CRUD)清單。它包含一個(gè)表單,讓用戶向系統(tǒng)輸入新 CD,有一個(gè)單選按鈕列表,允許用戶選擇音樂(lè)分類。當(dāng)用戶選擇了一個(gè)分類時(shí),就觸發(fā)某些 javascript 立即把表單提交回服務(wù)器。應(yīng)用程序還包含一個(gè) CD 清單,用戶可以根據(jù)標(biāo)題或藝術(shù)家對(duì)清單中的 CD 排序。

【編輯推薦】

  1. JSF與Spring的集成
  2. 學(xué)習(xí)JSF的生命周期
  3. 在JBOSS服務(wù)器上使用Myfaces的JSF實(shí)現(xiàn)
  4. 選擇JSF的理由:從UI組件開(kāi)始
  5. JSF中f:loadBundle標(biāo)簽的使用方法
責(zé)任編輯:佚名 來(lái)源: CSDN
相關(guān)推薦

2009-06-24 13:06:41

JSF組件Facelets

2009-06-24 16:42:17

JSF和Facelet

2009-06-26 17:36:10

FaceletsJSF

2009-06-25 11:21:36

JSF流行名詞

2009-06-22 13:27:01

JSF組件模型

2009-06-24 14:59:00

圖形bean組件JSF圖形組件

2009-07-07 17:18:57

Facelets介紹JSP與Facelet

2009-06-25 13:03:48

JSF的UI組件

2009-06-29 13:22:19

JSF技術(shù)JSF組件

2010-01-18 09:37:39

JSF 2.0Java EE 6

2009-06-24 17:05:10

2009-06-24 15:44:59

JSF的加減法Seam

2009-06-24 16:30:21

JSF組件模型

2009-09-17 11:39:16

OSGi服務(wù)

2009-06-24 15:13:36

自定義JSF組件

2009-06-11 11:22:40

JSFJSPJSF的UI組件

2009-06-25 14:53:35

自定義UI組件JSF框架

2009-06-01 09:30:51

JSF2.0FaceletsAjax4JSF

2021-06-03 18:42:26

Redis集群故障

2009-07-06 17:57:22

JSF表格組件
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)