首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2EE

JSF 組件模型開發指南:從 UIComponentBase 到 LoginComponent 實戰

     編輯:J2EE

JSF 組件模型類似 AWT/Swing:有事件、屬性、容器包含組件(容器亦是組件)。理論上分離於 HTML/JSP,標準組件集含 JSP 綁定生成 HTML 渲染。範例:日曆輸入、富文本編輯器。組件模型將常用功能商品化,降低添加功能門檻。

核心雙動作:解碼與編碼

  • 解碼:請求參數 → 組件值。
  • 編碼:組件當前值 → 對應標記(HTML)。

兩種實現方式:

  1. 直接實現:組件自行解碼/編碼。
  2. 委託實現:組件委託渲染器編碼/解碼——可關聯不同渲染器(如多選列表 vs 核取方塊列),同一組件不同呈現。

委託模式下,組件由兩部分構成:組件類(狀態與行為)+ 渲染器(請求讀取、顯示渲染、HTML 生成)。事件排隊與驗證發生在組件內部。

開發自定義組件關鍵類與步驟

  • 所有組件基類:UIComponent。開發繼承 UIComponentBase(提供抽象方法預設實現)。
  • 組件擁有父組件、識別符、組件類型(在 faces-config.xml 登記)。
  • 支援 JSF-EL 綁定 Managed Bean 屬性,任意屬性可關聯表達式。建立綁定屬性時需創建 ValueBinding 表達式;getter 未經 setter 設值時必須透過 ValueBinding 取值。
  • 組件可作 ValueHolder 或 EditableValueHolder,關聯 Validator/Converter。
  • 表單欄位組件擁有 ValueBinding,必須綁定 JavaBean 讀寫屬性。
  • 組件樹導航:getParent()、getChildren()、getFacets()(著名子組件,返回 Map)。

LoginComponent 開發四步走

  1. 擴展 UIComponentBase 創建類,保存組件狀態,faces-config.xml 登記組件。
  2. 創建自定義標籤,繼承 UIComponentTag,覆寫 encode/decode,faces-config.xml 登記渲染器。
  3. 定義渲染器或內聯實現,返回渲染器類型、組件類型,設置可用 JSF-EL 的屬性。
  4. (文中標題重複,實為步驟總結)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved