个性化阅读
专注于IT技术分析

JSF复合组件

本文概述

JSF提供了带有Facelets的复合组件的概念。复合组件是一种特殊类型的模板, 在你的应用程序中充当组件。

复合组件由标记标签和其他现有组件组成。这个可重用的, 用户创建的组件具有自定义的定义功能, 并且可以像其他任何组件一样将验证器, 转换器和侦听器连接到该组件。包含标记标签和其他组件的任何XHTML页面都可以转换为复合组件。

下表包含复合标签。

标签 功能
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="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标记用于声明可配置的值。 Composite:implementation标签用于声明所有XHTML标记标签, 而cc.attrs.username用于定义inputText组件的值。 ccis是JSF中复合组件的保留字。表达式#{cc.attrs.attribute-name}用于访问为复合组件的界面定义的属性。

上面的代码作为名为Composite-component-example.xhtml的文件存储在应用程序Web根目录内名为resources / com的文件夹中。

JSF Facelets复合组件1

使用复合组件

使用复合组件的网页通常称为使用页面。使用页面在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 Facelets复合组件2

赞(0)
未经允许不得转载:srcmini » JSF复合组件

评论 抢沙发

评论前必须登录!