要在JSF中創建自定義組件,需要創建一個擴展UIComponent並在JSF中註冊組件類型的類,例如使用@FacesComponent。要使用這個組件及其在Facelets頁面屬性,它是necesary鏈接在被稱爲標籤描述文件的特殊文件的Facelets標記組件:自定義JSF組件。使用UIComponentELTag
<tag>
<tag-name>test</tag-name>
<component>
<component-type>local.test.component_type</component-type>
</component>
</tag>
好了,但我很困惑的使用標籤類(和標籤處理程序)。查看mojarra源代碼,所有html基本組件都使用擴展UIComponentELTag的組件標記類在標記庫描述文件中聲明。例如:
<tag>
<name>commandButton</name>
<tag-class>
com.sun.faces.taglib.html_basic.CommandButtonTag
</tag-class>
</tag>
望着UIComponentELTag的JSF API:
UIComponentELTag專注其超,以便對採取的價值觀來自EL表達式的API特性。
該標籤設計用於Faces版本1.2和JSP版本2.1容器。
然後問題是,當我應該使用擴展UIComponentELTag的類來鏈接標記屬性與自定義組件而不是鏈接通過組件? 如果我不使用標籤類,那麼我的組件不能用於JSP頁面或以前的JSF版本,只能用於JSF facelets?