本文概述
- 创建复合组件
- 使用复合组件
复合组件由标记标签和其他现有组件组成。这个可重用的, 用户创建的组件具有自定义的定义功能, 并且可以像其他任何组件一样将验证器, 转换器和侦听器连接到该组件。包含标记标签和其他组件的任何XHTML页面都可以转换为复合组件。
【JSF复合组件】下表包含复合标签。
标签 | 功能 |
---|---|
composite:interface | 用于声明复合组件的使用合同。复合组件可以用作单个组件, 其功能集是使用合同中声明的功能的并集。 |
composite:implementation | 它用于定义复合组件的实现。如果出现Composite:interface元素, 则必须有一个相应的Composite:implementation。 |
composite:attribute | 它用于声明一个属性, 该属性可以提供给声明此标记的复合组件的实例。 |
composite:insertChildren | 它用于在使用页面中插入复合组件标签内的子组件。 |
composite:valueHolder | 它用于声明其组件由嵌套此元素的Composite:interface声明其合同的复合组件公开了ValueHolder的实现, 该实现适合用作使用页面中附加对象的目标。 |
composite:editableValueHolder | 它用于声明其合同由嵌套此元素的Composite:Interface声明的复合组件公开适合于用作使用页面中附加对象目标的EditableValueHolder的实现。 |
composite:actionSource | 它用于声明其组件由嵌套此元素的Composite:interface声明其合同的复合组件公开适合于用作使用页面中附加对象目标的ActionSource实现。 |
创建复合组件 在创建复合组件之前, 请确保使用下面给出的正确名称空间。
xmlns:composite="http://xmlns.jcp.org/jsf/composite"
//composite-component-example.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>
<
composite:interface>
<
composite:attribute name="username" required="false"/>
<
composite:attribute name="email" required="false"/>
<
/composite:interface>
<
composite:implementation>
<
h:outputLabel value="http://www.srcmini.com/User Name" />
<
h:inputText value="http://www.srcmini.com/#{cc.attrs.username}"/>
<
br/>
<
h:outputLabel value="http://www.srcmini.com/Email ID"/>
<
h:inputText value="http://www.srcmini.com/#{cc.attrs.email}"/>
<
br/>
<
/composite:implementation>
<
/h:body>
<
/html>
在上面的示例中, Composite:interface标记用于声明可配置的值。 Composite:implementation标签用于声明所有XHTML标记标签, 而cc.attrs.username用于定义inputText组件的值。 ccis是JSF中复合组件的保留字。表达式#{cc.attrs.attribute-name}用于访问为复合组件的界面定义的属性。
上面的代码作为名为Composite-component-example.xhtml的文件存储在应用程序Web根目录内名为resources / com的文件夹中。
文章图片
使用复合组件 使用复合组件的网页通常称为使用页面。使用页面在xml名称空间声明中包含对复合组件的引用, 如下所示:
xmlns:co="http://xmlns.jcp.org/jsf/composite/com">
在这里, com是存储文件的文件夹, 而co是用于访问组件的引用。
// 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-example />
<
/h:form>
<
/body>
<
/html>
运行项目后, 我们在网页上获得以下用户界面。
文章图片
推荐阅读
- JSF h:commandLink标记
- JSF h:commandButton标记
- JSF Bean验证
- 创建Facelets视图并映射Faces Servlet
- Facelets模板
- JSF Facelets语言