爪哇一角

          共同探討STRUTS#HIBERNATE#SPRING#EJB等技術
          posts - 3, comments - 6, trackbacks - 0, articles - 99
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          九 UIComponent介紹

          Posted on 2009-01-20 14:49 非洲小白臉 閱讀(407) 評論(0)  編輯  收藏 所屬分類: JSF

          JSF中的組件樹概念尤其重要。組件樹大量使用了組合設計模式,為開發者提供了大量的包括日歷,表格,樹,列表等標準Web組件。

          同時JSF還提供了大量的組件支持類,例如轉換器(可以進行類型轉換),驗證器(進行數據驗證),繪制器(不僅僅可以使用HTML來繪制組件)。接下來我們分析一下用戶界面組件。

          所有組件都要實現javax.faces.component.UIComponent接口。這個接口定義了瀏覽組件樹,和支持Bean交互,管理組件(包括數據驗證,數據轉換和組件繪制)等任務和方法。

          JSF提供了一個組件基類:javax.faces.component.UICompoentBase。它實現了一些基本的默認的組件方法,給開發人員提供了方便,一般來說,你只需要重寫特定的方法即可。

          JSF使用了適配器模式幫助你使用最少的代碼完成大部分工作。

          如果你想創建組件,那么有三條路可以走:

          直接實現UIComponent接口

          繼承UIComponentBase類

          繼承已經存在的UIComponent實現

           

          已經存在的UIComponent組件類主要有如下:

                 UIForm 表示一個輸入表單

           

                 UICommand 表示一個可在激活時執行一個動作的命令組件

           

                 UIOutput 表示一個可顯示值的組件

           

                 UIGraphic 表示一個可顯示圖像的組件

           

                 UIInput 表示一個可獲取和顯示用戶輸入的組件

           

                 UIParameter 用于為父組件配置參數值

           

                 UIPanel 表示一個面板(容器)組件

           

                 UISelectItem 表示選擇組件中的一個選擇項

           

                 UISelectItems表示選擇組件中的多個選擇項

           

                 UISelectBoolean表示一個具有boolean值的組件

           

                 UISelectOne 表示一個允許用戶在一系列值中選擇零個或一個值的組件

           

                 UISelectMany表示一個允許用戶在一系列值中選擇零個或多個值的組件

           

          事實上,一個JSF組件包括了三個部份:Tag、Component 與Renderer。

          Tag就是之前使用的標簽,它的目的在于設定Component屬性,設定驗證器,設定方法綁定等。

           

          Component請求時,每個Component會根據自己的ID值,從請求中取得相應的值,綁定到Bean。當請求來到應用程序時,需要通過解碼(decode)來

          HTTP中的內容轉變成JSF組件需要的值,相對的,當JSF組件將值轉變成HTTP字串資料送到客戶端,供客戶端顯示,就稱為編碼(encode)。

          Component可以自己實現編碼,解碼,也可以委托Renderer來實現。

           

          Renderer是一個可替換的組件,Component可以搭配不通的Renderer,而不用自定義編碼,解碼工作,這樣Component可以達到重用。

          你也可以編寫自己的Renderer,如果你對前臺的顯示有自己獨特的要求的話。甚至可以讓你的系統在移動設備等不同的平臺上應用。

           

          javax.faces.component.UIComponent

          自訂Component所要繼承的父類別,但通常,您是繼承其子類別,例如UIInput、UIOutput等等。

           

          javax.faces.webapp.UIComponentTag

          自訂JSF標簽所要繼承的父類別,繼承它可以幫您省去許多JSF標簽處理的細節。

           

          javax.faces.context.FacesContext
          包括了JSF相關的請求資訊,您可以透過它取得請求物件或請求參數,或者是。

           

          javax.faces.application.Application物件

          包括了一個應用程式所共享的資訊,像是locale、驗證器、轉換器等等,您可以透過一些 工廠方法 取得相關的資訊。

           

          主站蜘蛛池模板: 贵州省| 汪清县| 拉萨市| 开原市| 钟山县| 清水河县| 江孜县| 汾西县| 晋江市| 兴海县| 馆陶县| 肃宁县| 黎川县| 海阳市| 南昌县| 兴国县| 梨树县| 大连市| 南宫市| 西畴县| 芦山县| 日照市| 阜宁县| 青海省| 井陉县| 安顺市| 福鼎市| 崇信县| 广元市| 西乌珠穆沁旗| 噶尔县| 凌源市| 龙州县| 克山县| 江陵县| 弥勒县| 加查县| 甘孜| 桓仁| 广宗县| 铜山县|