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