1.不要盲目使用jsf1.2規(guī)范的實(shí)現(xiàn)框架:
目前sun,myfaces都推出了jsf1.2規(guī)范的實(shí)現(xiàn),但是各種jsf1.2支持并沒有跟上,所以小心使用。
jsf1.2的優(yōu)勢主要體現(xiàn)在統(tǒng)一的EL表達(dá)式,也就是說你可以在頁面上,混合使用只要支持了統(tǒng)一表達(dá)式的各種tag標(biāo)記,同時(shí)可以享受jsf在表現(xiàn)層開發(fā)上帶來的強(qiáng)大支持,這就又需要兩個(gè)規(guī)范的支持,一個(gè)是jsp規(guī)范,一個(gè)是jstl規(guī)范,jsp2.1規(guī)范支持統(tǒng)一EL,它在tomat6.0.14以后才開始支持,glassFish默認(rèn)支持,這些都是基礎(chǔ)設(shè)施,jstl把不同的taglibs定義了一個(gè)規(guī)范,你可以選擇各種實(shí)現(xiàn)了jstl規(guī)范的taglibs框架,目前大多數(shù)使用的是apache 帶的標(biāo)準(zhǔn)實(shí)現(xiàn),但是apache仍然沒有推出jstl1.2規(guī)范的實(shí)現(xiàn),只有jstl1.2規(guī)范以后開始支持統(tǒng)一EL,目前可能只有g(shù)lassfish有jstl1.2的默認(rèn)實(shí)現(xiàn),我沒有試過能不能復(fù)用在其他容器下,但是在沒有驗(yàn)證之前,請斟酌使用,jsf1.2在統(tǒng)一EL方面的常用應(yīng)用就是和jstl標(biāo)記混合。如果你的項(xiàng)目仍然是tomcat5.5或者jboss的容器,使用jsf1.2沒有多大優(yōu)勢!而且jsf1.2雖然推出了不同的實(shí)現(xiàn)框架,但是增強(qiáng)框架仍然沒有看到,myfaces基于jsf1.2的 Tomahawk 還沒有推出支持1.2規(guī)范的實(shí)現(xiàn),如果僅僅使用sun的標(biāo)準(zhǔn)實(shí)現(xiàn)和myfaces的標(biāo)準(zhǔn)實(shí)現(xiàn),在項(xiàng)目中你會步履維艱!
2.如果沒有商業(yè)jsf框架選擇,請選擇myfaces的增強(qiáng)框架Tomahawk
sun的標(biāo)準(zhǔn)實(shí)現(xiàn)和myfaces的標(biāo)準(zhǔn)實(shí)現(xiàn)都是針對規(guī)范該有的內(nèi)容進(jìn)行實(shí)現(xiàn),并沒有在組件方面進(jìn)行必要的增強(qiáng),這也是我主要使用Tomahawk這種對組件增強(qiáng)框架的原因。
3.現(xiàn)階段不要相信IDE工具支持
netbeans的可視化操作使用的是自己的jsf實(shí)現(xiàn),沒有myfaces框架的支持,需要等到6.0推出才能驗(yàn)證它的優(yōu)勢,其他包括商業(yè)工具,使用后錯(cuò)誤很多,感覺就是在測試我們的接受能力,現(xiàn)階段我對jsf的可視化工具不抱希望,如果你有信心,可以試試工具!現(xiàn)階段我推薦的方式是jsf手動開發(fā),在開發(fā)中積累經(jīng)驗(yàn)!
4.不要隨意使用ajax支持的jsf組件。
如果你是web2.0的支持者,現(xiàn)階段還是不要用jsf好,jsf是下一代web2.0的主導(dǎo)。如果你是標(biāo)準(zhǔn)的企業(yè)開發(fā),建議使用標(biāo)準(zhǔn)方式進(jìn)行頁面請求。jsf最大的貢獻(xiàn)不是支持ajax,而是內(nèi)部實(shí)現(xiàn)了一個(gè)可以透明化http無狀態(tài)的機(jī)制,這種機(jī)制讓我們在開發(fā)上高度關(guān)注組件化業(yè)務(wù),讓我們的開發(fā)能走的更遠(yuǎn),而使用ajax在理論上和標(biāo)準(zhǔn)方式一樣,在服務(wù)端具有統(tǒng)一的模型處理,但是javascript在工程開發(fā)上是高度的復(fù)雜和麻煩,jsf在處理純html上在現(xiàn)階段也是常常出現(xiàn)一些讓人接受不了的問題,有時(shí)候需要自己手動Hack,但是好在html還不復(fù)雜,如果頁面端大量javascript,你怎么辦,這還不算請求帶來的問題,ajax框架本身的質(zhì)量!
6.如果項(xiàng)目中決定使用jsf,請找一個(gè)能拿的住jsf的人,整個(gè)開發(fā)不僅僅會使用jsf,還有混合使用其他頁面技術(shù),如果這個(gè)人對表現(xiàn)層的理解包括jsf的理解不夠,項(xiàng)目在很多方面的質(zhì)量會有折扣,但是對于整個(gè)開發(fā)團(tuán)隊(duì)使用jsf會比使用其他表現(xiàn)層技術(shù)更簡單,更高效,開發(fā)質(zhì)量也會更高,這都要看jsf負(fù)責(zé)人的技術(shù)應(yīng)變能力了!
5.還是老調(diào)重提,在項(xiàng)目中最好加入seam的支持,會讓jsf的開發(fā)變的簡單!