如何構(gòu)建AjaxJSF事件驅(qū)動(dòng)

本篇內(nèi)容介紹了“如何構(gòu)建Ajax JSF事件驅(qū)動(dòng)”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

創(chuàng)新互聯(lián)建站專注于撫寧網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供撫寧營銷型網(wǎng)站建設(shè),撫寧網(wǎng)站制作、撫寧網(wǎng)頁設(shè)計(jì)、撫寧網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務(wù),打造撫寧網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供撫寧網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

時(shí)下,大多數(shù) Java 開發(fā)人員都很看好 mashup,所以您可能會(huì)困惑:Seam 與號(hào)稱 Web 2.0 的技術(shù),尤其是 Ajax,如何能集成。若能使用 Seam 啟動(dòng) JSF 中的部分頁面更新或者用 Google Map 協(xié)助 JSF 應(yīng)用程序 mashup,那將非??幔皇敲?您不僅能這么做,而且還非常容易。

我將為您展示如何使用 Seam Remoting API 和 Ajax JSF 組件來協(xié)助基于 JSF 應(yīng)用程序中的 Ajax 風(fēng)格的交互。正如您將會(huì)看到的,結(jié)合 Seam 和 Ajax 的***好處在于它讓您可以享用所有 Web 2.0 的奢侈東西,而同時(shí)又不需要陷于使用 JavaScript XMLHttpRequest 對象的痛苦之中。借助 Seam Remoting 和 Ajax JSF,可以與服務(wù)器上的受管 bean 通信,就好像這些 bean 與瀏覽器同在本地一樣。瀏覽器和服務(wù)器狀態(tài)保持同步,而且永遠(yuǎn)無需處理促成它們之間通信的低層 API。

我首先會(huì)為您展示 Seam 是如何推動(dòng) Ajax 編程的基于組件的新方式的。您將學(xué)會(huì)如何使用 Seam Remoting API 來通過 Ajax 進(jìn)行 JavaScript 和服務(wù)器端對象間的通信。一旦理解了這種面向 Ajax 的新(且簡單的)方式,您就可以使用它來增強(qiáng) Open 18 應(yīng)用程序,方法如下:

在 Open 18 球場目錄和 Google Maps 之間創(chuàng)建一個(gè) mashup。
使用 Ajax JSF 合并應(yīng)用程序的球場目錄頁和球場細(xì)節(jié)頁。
重新訪問應(yīng)用程序的 Spring 集成并讓 Spring bean 在 Seam Remoting 的生命周期可用。

Open 18 和 Google Maps 之間的 mashup 讓用戶可以定位地圖中的高爾夫球場目錄中的位置。將此球場目錄和球場細(xì)節(jié)頁合并起來(并將低層代碼 Ajax 化)可以讓您顯示球場的細(xì)節(jié)信息而無需加載新頁。將 Spring bean 和 Seam Remoting 相集成讓您可以捕獲 Google Maps 位置標(biāo)記的重定位并能將相關(guān)球場的經(jīng)度和緯度存儲(chǔ)到數(shù)據(jù)庫中。如您所見,結(jié)果就是會(huì)產(chǎn)生所有高爾夫球員都喜歡使用的 Web 2.0 風(fēng)格的應(yīng)用程序,這真是讓人印象深刻!

如果您曾經(jīng)深受涉及到大量 JavaScript 的過于復(fù)雜的 Ajax 編程之苦,如果到目前為止,您都由于不想面對其復(fù)雜性而一直盡量避免使用 Ajax,那么本文所要教授的內(nèi)容將會(huì)幫助您免除這種擔(dān)心。在重構(gòu)應(yīng)用程序時(shí),您需要進(jìn)行一些 JavaScript 編碼,但與大多數(shù) Ajax 實(shí)現(xiàn)不同,JavaScript 并不會(huì)占據(jù)您代碼中的大部分; 相反,它只擴(kuò)展了服務(wù)器端的 Java 對象。

通向 Ajax 的不同之路

正如在應(yīng)用程序中希望避免顯式的內(nèi)存管理一樣,您亦不 希望必須要處理低層的 Ajax 請求協(xié)議。這么做只會(huì)帶來更大的麻煩(更確切地說,是更多的麻煩),比如多瀏覽器支持、數(shù)據(jù)封送處理、并發(fā)沖突、服務(wù)器負(fù)載以及定制 servlet 和 servlet 過濾器。其中您想要避免的***的麻煩是無意間公開的無狀態(tài)的請求-響應(yīng)范例,但該范例是基于組件的框架,比如 JSF,所想要隱藏的。

JSF 生命周期通過對底層的 servlet 模型屏蔽應(yīng)用程序代碼促進(jìn)了面向組件的設(shè)計(jì)。為了保持處理 Ajax 的這種抽象性,您可以將低層的這些瑣碎工作交由 Seam Remoting 或 Ajax JSF 處理。這兩個(gè)庫均可負(fù)責(zé)通過 Ajax 交互將 JSF 組件熔合到瀏覽器時(shí)所需的管道處理。當(dāng)事件觸發(fā)時(shí),比如用戶單擊了一個(gè)按鈕,消息就會(huì)異步發(fā)送給服務(wù)器上的組件。一旦收到響應(yīng),它就會(huì)用來對此頁進(jìn)行增量更新。用來處理瀏覽器和服務(wù)器端組件間的交互的低層通信協(xié)議都藏于 API 之后。

用戶能看到單擊按鈕后所發(fā)生的方法調(diào)用的結(jié)果。在研究此用例時(shí),有兩個(gè)要點(diǎn)需要注意: (1) 該頁永遠(yuǎn)無法刷新; (2) 客戶端代碼與組件上的方法進(jìn)行透明通信,而不是顯式地構(gòu)建然后再請求 URL。標(biāo)準(zhǔn)的 HTTP 請求在后臺(tái)使用,但客戶端代碼永遠(yuǎn)無需直接與 HTTP 協(xié)議交互。

Seam Remoting 和 Ajax JSF

Seam Remoting 和 Ajax JSF 是兩個(gè)獨(dú)特的庫,可分別服務(wù)于 JSF 的 “Ajax 化” 的目的。兩個(gè)庫均使用 Ajax 來引入交互模型,其中瀏覽器和服務(wù)器間的通信可以在后臺(tái)異步發(fā)生,并對用戶不可見。沒有必要為了執(zhí)行服務(wù)器上的方法而浪費(fèi)用戶頁面重載的時(shí)間。在這些庫所發(fā)出的 Ajax 請求中由服務(wù)器檢索到的信息可用來增量地 “實(shí)時(shí)” 更新頁面的狀態(tài)。兩個(gè)庫均可配備生命周期,此生命周期可以在瀏覽器需要的時(shí)候恢復(fù)(restore)組件的狀態(tài)。這種 Ajax 交互并不是真的請求而是一種 “恢復(fù)并執(zhí)行”。瀏覽器像是 “敲敲” 服務(wù)器的 “肩膀”,請它在服務(wù)器端的一個(gè)受管 bean 上執(zhí)行一個(gè)方法并返回結(jié)果。

雖然這兩個(gè)庫工作起來有些差別,但它們并不是相互排斥的。由于它們都采用的是 JSF 組件模型,所以二者可以很容易地相互結(jié)合,這將在本文后面的部分詳細(xì)介紹。目前,我們只需分別考慮二者各自將 Ajax 風(fēng)格的交互引入 JSF 應(yīng)用程序的方式:

Seam Remoting 提供了 JavaScript API,可以使用這些 API 來像訪問本地對象一樣來訪問 JavaScript 中的服務(wù)器端組件,以便通過方法調(diào)用發(fā)送和檢索數(shù)據(jù)。Seam Remoting 使用定制的、非 JSF 生命周期來使該瀏覽器能夠與服務(wù)器端的組件通信。只有 Seam 容器和其組件可以在這些請求期間被恢復(fù)。透明協(xié)議是 Ajax,但您無需費(fèi)心數(shù)據(jù)包如何傳輸?shù)募?xì)節(jié)。

Ajax JSF 則通過完全隱藏 JavaScript 的使用讓抽象更進(jìn)了一步。它將所有邏輯都包裹在基本 UI 組件內(nèi)。Ajax JSF 通過完整的 JSF 生命周期接受 Ajax 請求。因而,支持 Ajax 的組件可以在不觸發(fā)瀏覽器導(dǎo)航事件的前提下執(zhí)行動(dòng)作處理程序、升級(jí) JSF 組件樹以及重新呈現(xiàn)該頁的某些部分。同樣地,通信也是通過 Ajax 實(shí)現(xiàn)的,但所有這些均在后臺(tái)發(fā)生,頁面開發(fā)人員不可見。Ajax JSF 面向組件的方法讓 Ajax 功能得以成為 JSF 很自然的一部分,而不是格格不入的外來者。

我將深入探究這些方式,但我們還是先來看看 Ajax 的基礎(chǔ)知識(shí)吧。

“如何構(gòu)建Ajax JSF事件驅(qū)動(dòng)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

分享標(biāo)題:如何構(gòu)建AjaxJSF事件驅(qū)動(dòng)
分享網(wǎng)址:http://muchs.cn/article8/jsoiip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、品牌網(wǎng)站建設(shè)、外貿(mào)建站、電子商務(wù)、外貿(mào)網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化