接上一篇內容。這次主要分析一下jsf的相關組件包,也是jsf和structs主要不同的地方。jsf 規范中,對于組件的設計,和其他組件架構一樣,分離表現層和模型層。對于組件的render由具體的Renderer來處理,這也達到了Model和View分離的原則。
component:所有的基本組件都在其中,如下的主要類圖,對于各個組件就不一一詳細介紹了。主要介紹一下幾個接口:

StateHolder:用于表示在請求之間需要保存相應的狀態信息,必須實現saveState和resotreState方法。
ValueHolder:用于支持本地值的保持,用于訪問model數據,通過表達式,支持轉換。
EditableValueHolder:用于表示那些可以編輯的組件值
ActionSource:由UIComponet實現,用于作為ActionEvent的事件源,支持默認的ActionListener調用
ActionSource2:這是最近的規范中增加的,提供了對于MethodExpression的支持。
ContextCallback:用于組件執行相應的回調
NamingContainer:標志接口,表示容器組件
convert:包括了主要的Convert接口,以及內置的Convert實現類,主要的作用用于在頁面值綁定時,進行類型的轉換工作
validator:主要的驗證包,定義了通過的Validator接口,以及簡單的幾個驗證類。默認情況下,jsf都是進行服務端驗證,如果想需要客戶端驗證,暫時從規范中,還沒有找出相應的解決方案。不過現在已經是Ajax時代了,使用異步的傳輸,從效果上已經接近于客戶端之間驗證。
event:主要的事件體系。個人覺得jsf的事件體系還是比較弱的。和強大的Swing事件體制相比,那簡直差遠了。而且jsf默認使用一個ActionListener來委派所有的客戶端動作觸發。大多數的調用都是使用MethodExpression來進行。
model:只是加強了對于DataTable的支持,以及SelectItems。
render:主要的展示包,當然只是提供規范,具體由實現類提供。對于Renderer,都需要一套RenderKit.而RenderKit由RenderKitFactory管理。ResponseStateManager,作為StateManager的幫助類,進行主要的State操作。
基本上,規范也就這么些東東。從整體來看,并不算太復雜。可惜現在的jsf實現實在太多了,而且各個實現并不一定兼容,導致了jsf世界的龐大。
posted on 2007-04-25 16:33
布衣郎 閱讀(2806)
評論(2) 編輯 收藏 所屬分類:
web view技術