freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

seam無縫集成:為jsf定做應(yīng)用程序框架(編輯修改稿)

2025-08-03 12:02 本頁面
 

【文章內(nèi)容簡介】 將組件框架想象為使用 “pull” 模型,那么這種區(qū)別就很容易理解了。組件框架中的控制器不是預(yù)先處理頁面請求(在基于動作的框架中控制器就是這么做的),而是在請求生命周期中作出讓步,在視圖中調(diào)用數(shù)據(jù)提供方法。此外,頁面上的元素,即組件被綁定到事件,這些事件可以觸發(fā)服務(wù)器端對象(激活后)的方法調(diào)用,從而導(dǎo)致重新顯示相同的視圖,或者轉(zhuǎn)換到另一個頁面。因此,組件框架也被歸類為事件驅(qū)動的。組件框架抽象出用于事件通信的底層請求-響應(yīng)協(xié)議。事件驅(qū)動方法的優(yōu)點是可以減少單個方法在呈現(xiàn)視圖時需要預(yù)先做的工作。在組件框架中,UI 事件或解析的值綁定表達(dá)式直接導(dǎo)致方法調(diào)用。一個應(yīng)用程序即使只達(dá)到中度成熟,它通常也需要在任何給定頁面上使用很多不相關(guān)的活動。如果將對所有這些信息的管理全部放入一個動作或者一個動作鏈中,那么勢必給維護(hù)帶來極大的困擾。因此,開發(fā)人員常常發(fā)現(xiàn)他們的代碼偏離了面向?qū)ο竽P偷能壍?,反而陷入了過程編程模型的泥潭。相反,組件框架將這種工作隔離出來,更自然地加強(qiáng)了對象的角色和責(zé)任。Seam 與 JSF對于 JSF 和組件框架的基礎(chǔ)已經(jīng)介紹得差不多了。實際上 ?? 很多 Java 開發(fā)人員最近發(fā)現(xiàn) ?? 轉(zhuǎn)移到 JSF 并非總是一帆風(fēng)順。采用組件模型會帶來一些全新的問題,首要的一個問題是您通常需要試著使應(yīng)用程序符合基于動作的 Web。很多時候,JSF 需要具有像基于動作的框架那樣的行為,但是在標(biāo)準(zhǔn) JSF 中這是不可行的,至少不為每個請求使用 phase 監(jiān)聽器就不行。JSF 的其他主要缺點還包括對 HTTP 會話的依賴過重(尤其是在一序列的頁面之間傳播數(shù)據(jù)時),簡陋的異常處理,缺少書簽支持,以及太多的 XML 配置。通過與 JSF 自然地集成,同時加入 JSF 規(guī)范委員會放棄的或者忽略掉的新功能,Seam 解決了很多這樣的問題。Seam 的框架鼓勵使用緊湊的、易讀的、可重用的代碼,并且避免了所有為解決上述問題而常常加入的 “粘連(glue)” 邏輯。圖 3 涵蓋了 JSF 生命周期中用于簡化應(yīng)用程序代碼的大多數(shù) Seam 擴(kuò)展點:圖 3. Seam 生命周期增強(qiáng)讓我們來考慮其中一些增強(qiáng),因為它們適用于 JSF 開發(fā)中一些常見的挑戰(zhàn)。并不復(fù)雜的配置Seam 演示了 Java 5 注釋的一個非常實用的用法。Seam 的部署掃描程序檢查所有包含 文件的歸檔文件,并為所有標(biāo)有 @Name 注釋的類創(chuàng)建一個 Seam 組件。由于 Java 語言缺乏用于在代碼級添加元數(shù)據(jù)的一種公共語法,因此需要設(shè)計很多 XML 配置。當(dāng) Java 5 規(guī)范中加入注釋后,就獲得了一個更好的解決方案。由于大多數(shù) backing bean 是為了在特定應(yīng)用程序中使用而開發(fā)的,因此沒有理由將這些 bean 的配置 “抽象” 到類本身以外的任何文件中。附帶的好處是,您可以少處理一個文件。Seam 提供了一組完整的注釋來幫助將 bean 集成到 JSF 生命周期中。清單 4 顯示了其中一些。頁面動作和 RESTful URL在不使用組件框架的情況下,另一個必須解決的熟悉的問題是預(yù)先處理每個請求,就像在基于動作的框架中那樣。受此影響的用例是 RESTful URL、書簽支持、通過 URL 模式獲得的安全性以及頁面流驗證等。這也是學(xué)習(xí)使用 JSF 的開發(fā)人員容易感到困惑的主要原因之一。有些 JSF 供應(yīng)商通過用開發(fā)人員工具提供 onPageLoad 功能來繞過這個問題(見 參考資料),但這不是核心規(guī)范的一部分。當(dāng)用戶直接從書簽(比如)請求一個商品詳細(xì)信息屏幕時,通常會發(fā)生什么事情呢?由于 JSF 控制器采取被動方式,當(dāng)頁面開始呈現(xiàn)時,即使明顯沒有目標(biāo)數(shù)據(jù),也不能將用戶重新帶到邏輯流的開始處。相反,這種情況下只能顯示一個空頁面,其中只有一些空值或其他可能存在的假信號。首先,您可能會本能地想要在頁面的主 backing bean 上實現(xiàn)一個 “divrender” 方法。然而,在組件框架中,backing bean 與頁面之間的關(guān)系并不一定都是一對一的。每個頁面可能依賴于多個 backing bean,每個那樣的 bean 也可能在多個不同的頁面上使用。必須用某種方式將一個視圖 ID(例如 /user/)與一個或多個方法關(guān)聯(lián)起來,當(dāng)選擇呈現(xiàn)相應(yīng)的視圖模板時就調(diào)用這個(些)方法。您可以使用 phaselistener 方法,但是這仍然需要定制的邏輯來確定對于當(dāng)前視圖和階段是否應(yīng)該執(zhí)行該功能。這種解決方案不但會導(dǎo)致很多冗余邏輯,而且會將視圖 ID(很可能是應(yīng)用程序中最不確定的部分)硬編碼到編譯后的 Java 代碼中。頁面動作來幫忙Seam 的頁面動作可以幫助您預(yù)先攔截呈現(xiàn)的假信號。頁面動作是使用方法綁定指定的,方法綁定在進(jìn)入頁面時、Render Response 階段之前執(zhí)行。對于 /WEBINF/ 配置文件中一個給定的視圖 ID,可以配置任意數(shù)量的方法綁定。(或者,可以通過將它們放在視圖模板鄰近的一個文件中,復(fù)制它的名稱,但是將文件擴(kuò)展名換為 *.,從而分解每個頁面的定義)。對于頁面動作,XML 是有必要的,因為視圖 ID 非常容易變化。就像 JSF 通過 Apply Request Values 階段的值綁定將 post 數(shù)據(jù)映射到模型對象一樣, Seam 可以通過執(zhí)行頁面動作之前的值綁定將任意請求參數(shù)映射到模型對象。這些請求參數(shù)注入的配置嵌套在頁面動作 XML 聲明中。如果頁面動作方法調(diào)用返回一個非空字符串值,則 Seam 將其當(dāng)作一個導(dǎo)航事件。因此,不必遷移到一個完整的基于動作的框架中,仍然可以比得上最特別的特性。Seam 包括很多內(nèi)置的頁面動作,它們通??鐟?yīng)用程序使用。其中包括用于驗證 conversation 是否建立的一個動作;可以啟動、嵌套和結(jié)束 conversation 的動作;處理預(yù)期異常的動作;以及確保適當(dāng)?shù)膽{證的動作。頁面動作是啟用對 JSF 的書簽支持的關(guān)鍵。Seam 的創(chuàng)立者允許在進(jìn)入頁面時請求參數(shù) actionMethod 觸發(fā)一個方法調(diào)用,從而利用了這一特性。更妙的是,您不需要做任何額外的工作就能為書簽創(chuàng)建鏈接。 Seam 提供了兩個組件標(biāo)記:s:link 和 s:button,用以處理細(xì)節(jié)。這兩個標(biāo)記分別對應(yīng)于
點擊復(fù)制文檔內(nèi)容
教學(xué)教案相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1