鍍金池/ 教程/ HTML/ JSF復(fù)合組件
JSF數(shù)據(jù)表(h:dataTable)添加刪除
JSF <h:commandLink>標(biāo)簽
JSF應(yīng)用程序入門示例
JSF數(shù)據(jù)表(ui:repeat)創(chuàng)建表
JSF列表框
JSF數(shù)據(jù)表(h:dataTable)DataModel排序數(shù)據(jù)
JSF復(fù)合組件
JSF <h:inputText>標(biāo)簽
JSF表單組合框
JSF <h:messages>標(biāo)簽
JSF <h:message>標(biāo)簽
JSF轉(zhuǎn)換日期時(shí)間
JSF JDBC連接
JSF <h:inputHidden>標(biāo)簽
JSF多選列表框
JSF <h:inputSecret>標(biāo)簽
JSF自定義轉(zhuǎn)換器
JSF <f:ajax>標(biāo)簽
JSF生命周期
JSF可重定位資源
JSFJSF用戶界面組件模型
JSF <h:attribute>標(biāo)簽
JSF驗(yàn)證器標(biāo)簽
JSF驗(yàn)證字符串長(zhǎng)度
JSF轉(zhuǎn)換器標(biāo)簽
JSF托管bean(Managed Bean)
JSF值變化的事件
JSF UI組件示例
JSF MySQL CURD實(shí)例
JSF數(shù)據(jù)表(h:dataTable)排序數(shù)據(jù)
JSF <h:graphicImage>標(biāo)簽
JSF <f:convertNumber>標(biāo)簽
JSF教程
JSF托管Bean
JSF輸出腳本
JSF <h:outputText>標(biāo)簽
JSF操作事件
JSF驗(yàn)證正則表達(dá)式
JSF數(shù)據(jù)表(h:dataTable)行號(hào)
JSF <h:setPropertyActionListener>標(biāo)簽
JSF注入托管bean實(shí)例
JSF <h:commandButton>標(biāo)簽
JSF Web資源
JSF <h:inputFile>標(biāo)簽
JSF驗(yàn)證浮點(diǎn)數(shù)值范圍
JSF Facelets視圖
JSF是什么?
JSF Facelets模板
JSF的特性(特點(diǎn))
JSF自定義驗(yàn)證器類
JSF單選按鈕
JSF輸出樣式
JSF數(shù)據(jù)表(h:dataTable)更新數(shù)據(jù)
JSF HTML5友好標(biāo)記
JSF表單復(fù)選框(CheckBox)示例
JSF <h:form>標(biāo)簽
JSF Facelets技術(shù)介紹
JSF輸出格式化
JSF <h:inputtextarea>標(biāo)簽
JSF驗(yàn)證整數(shù)范圍
JSF <h:panelGrid>標(biāo)簽

JSF復(fù)合組件

JSF通過Facelets提供復(fù)合組件(有點(diǎn)類似于Widget)的概念。復(fù)合組件是一種特殊類型的模板,它充當(dāng)應(yīng)用程序中的一個(gè)組成部分。

復(fù)合組件由標(biāo)記標(biāo)簽和其他現(xiàn)有組件組成。 這個(gè)可重復(fù)使用的用戶創(chuàng)建的組件具有定制的定義功能,并且可以像任何其他組件一樣具有連接到它的驗(yàn)證器,轉(zhuǎn)換器和監(jiān)聽器。 包含標(biāo)記標(biāo)簽和其他組件的任何XHTML頁面都可以轉(zhuǎn)換為復(fù)合組件。

以下表格包含復(fù)合標(biāo)簽以及說明 -

標(biāo)簽 功能
composite:interface 它用于聲明復(fù)合組件的約定。 組合組件可以用作單個(gè)組件,其特征集合是使用合同中聲明的功能的并集。
composite:implementation 它用于定義復(fù)合組件的實(shí)現(xiàn)。 如果composite:interface元素存在,必須有一個(gè)相應(yīng)的composite:implementation
composite:attribute 它用于聲明一個(gè)屬性,該屬性可以被賦予該標(biāo)簽被聲明的復(fù)合組件的一個(gè)實(shí)例。
composite:insertChildren 它用于在使用頁面中的復(fù)合組件標(biāo)簽中插入子組件。
composite:valueHolder 它用于聲明由該元素嵌套的composite:interface聲明其合同的組合組件暴露了適用于使用頁面中附加對(duì)象目標(biāo)的ValueHolder實(shí)現(xiàn)。
composite:editableValueHolder 它用于聲明由該元素嵌套的composite:interface聲明其合同的組合組件暴露了適用于使用頁面中附加對(duì)象目標(biāo)的EditableValueHolder的實(shí)現(xiàn)。
composite:actionSource 它用于聲明由該元素嵌套的composite:interface聲明其約定的組合組件,暴露了適用于使用頁面中附加對(duì)象目標(biāo)的ActionSource實(shí)現(xiàn)。

在下面的例子中,我們分析一個(gè)接受用戶名和電子郵件地址作為輸入的組合組件。

實(shí)例

打開NetBeans IDE創(chuàng)建一個(gè)名稱為:CompositeComponents 的Web工程,其完整的目錄結(jié)構(gòu)如下所示 -

創(chuàng)建復(fù)合組件

在創(chuàng)建組合組件之前,請(qǐng)確保使用正確的命名空間,如下所示。

xmlns:composite="http://xmlns.jcp.org/jsf/composite"

創(chuàng)建一個(gè)文件:composite-component.xhtml,代碼如下所示 -

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml"  
      xmlns:composite="http://xmlns.jcp.org/jsf/composite"  
      xmlns:h="http://xmlns.jcp.org/jsf/html">  
    <h:head>  
        <title>Composite Component Example</title>  
    </h:head>  

    <h:body>
        <h2>In composite-component.xhtml Form</h2>
        <composite:interface>  
            <composite:attribute name="username" required="false"/>  
            <composite:attribute name="email" required="false"/>  
        </composite:interface>  
        <composite:implementation>  
            <h:outputLabel value="User Name " />  
            <h:inputText value="#{cc.attrs.username}"/><br/>  
            <h:outputLabel value="Email ID "/>  
            <h:inputText value="#{cc.attrs.email}"/><br/>  
        </composite:implementation>  
    </h:body>  
</html>

在上面的例子中,composite:interface標(biāo)簽用于聲明可配置的值。 composite:implementation標(biāo)簽用于聲明所有XHTML標(biāo)記和cc.attrs.username用于定義inputText組件的值。 ccs是JSF中復(fù)合組件的保留字。 表達(dá)式#{cc.attrs.attribute-name}用于訪問為組合組件界面定義的屬性。

上述代碼作為名為composite-component.xhtml的文件存儲(chǔ)在應(yīng)用程序Web根目錄的 resources/com 文件夾中。

使用復(fù)合組件

使用復(fù)合組件的網(wǎng)頁通常稱為使用頁面。 使用頁面包含對(duì)xml命名空間聲明中復(fù)合組件的引用,如下所示:

<html xmlns:co="http://xmlns.jcp.org/jsf/composite/com">

這里,com是存儲(chǔ)文件的文件夾,co是用于訪問組件的引用。

創(chuàng)建一個(gè)文件:index.xhtml,代碼如下所示 -

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml"  
      xmlns:h="http://xmlns.jcp.org/jsf/html"  
      xmlns:co="http://xmlns.jcp.org/jsf/composite/com">  
    <h:head>  
        <title>Implementing Composite Component</title>  
    </h:head>  
    <body>  
        <h:form>  
            <co:composite-component />  
        </h:form>  
    </body>  
</html>

運(yùn)行項(xiàng)目后,在網(wǎng)頁上將看到以下用戶界面 -


下一篇:JSF生命周期