深入淺出JSF2系列一 最酷的特性 支持AJAX.
隨著JSF2規(guī)范通過,JSF2已經(jīng)慢慢進入我們的視線,本系列以Sun 推薦實現(xiàn)JSF2-Mojarra 為基礎(chǔ),來深入淺出看看JSF2給我們帶來了什么。
首先看看最酷的特性,支持AJAX。
JSF是基于組件的web Framework,本身有生命周期控制,在JSF1.2的Spec中,沒有支持AJAX,而為了提高Web的可用性,AJAX又是必須的。怎么做呢?Oracle的ADF Faces ,Apache 的MyFaces 以及IceFaces等個自有各自的實現(xiàn),其中ADF Faces和MyFace提出 PPR(Partial Page Rendering)局部渲染技術(shù),其實在本質(zhì)上就是AJAX。 通過一個事件比如CommandButton CommandLink 等刷新局部需要更改的頁面,而不是整個頁面。這些實現(xiàn)雖然能夠解決問題,但畢竟不是規(guī)范不是統(tǒng)一的實現(xiàn),導(dǎo)致JSF的開發(fā)學(xué)習(xí)成本提高。JSF2面對這種局面,在規(guī)范中明確指出JSF2支持AJAX。
下面的例子來自Mojarra Samlple,看看JSF2中AJAX的使用:
1. 準備條件:
從https://javaserverfaces.dev.java.net下載jSF2 jsf-api.jar jsf-impl.jar
2. 選擇熟悉的IDE和JEE 服務(wù)器,本文為Eclipse 和JBoss。
3. 創(chuàng)建Web工程,導(dǎo)入jsf-api.jar jsf-impl.jar到lib中。
4. 拷貝samples\basic-ajax
5. Run count.xhtml
分析AJAX調(diào)用:





























JSF2使用XHTML來表示頁面。在頁面中,引入jsf.js. 然后在button1的Onlick事件中AJAX請求Server jsf.ajax.request(this, event, {execute: this.id, render: 'out1'}). 點擊后,僅僅刷新 id為out1d的outputText組件,而不是真?zhèn)€頁面。
看看BackBean的代碼:






























首先看到JSF2 不需要XML配置文件,通過注釋指定Backeban 名字已經(jīng)Sceope。
當點擊button1,局部刷新id為out1d的outputText組件,而id 為test的outputText不會變化。真正做多局部刷新,如下圖:
點擊CountButton時,第一個OutputText 值一直在曾加,而下面的沒有變化,而真?zhèn)€頁面刷新時,兩個值在變化。
總結(jié):
通過及其簡單的例子說明了JSF2 AJAX特性。我們也可通過該特性實現(xiàn)很炫的功能。相對于PPR,該實現(xiàn)更自由,我們一個在任何組件上調(diào)用AJAX,而不像目前PPR只在先對幾個組件上。 未完 接下來的更精彩!!
posted on 2009-07-19 12:25 advincenting 閱讀(3612) 評論(0) 編輯 收藏 所屬分類: java EE