JSF 組件模型類似 AWT/Swing:有事件、屬性、容器包含組件(容器亦是組件)。理論上分離於 HTML/JSP,標準組件集含 JSP 綁定生成 HTML 渲染。範例:日曆輸入、富文本編輯器。組件模型將常用功能商品化,降低添加功能門檻。
兩種實現方式:
委託模式下,組件由兩部分構成:組件類(狀態與行為)+ 渲染器(請求讀取、顯示渲染、HTML 生成)。事件排隊與驗證發生在組件內部。
UIComponent。開發繼承 UIComponentBase(提供抽象方法預設實現)。faces-config.xml 登記)。ValueBinding 表達式;getter 未經 setter 設值時必須透過 ValueBinding 取值。ValueHolder 或 EditableValueHolder,關聯 Validator/Converter。ValueBinding,必須綁定 JavaBean 讀寫屬性。getParent()、getChildren()、getFacets()(著名子組件,返回 Map)。UIComponentBase 創建類,保存組件狀態,faces-config.xml 登記組件。UIComponentTag,覆寫 encode/decode,faces-config.xml 登記渲染器。