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