JSF复合组件

本文概述

  • 创建复合组件
  • 使用复合组件
JSF提供了带有Facelets的复合组件的概念。复合组件是一种特殊类型的模板, 在你的应用程序中充当组件。
复合组件由标记标签和其他现有组件组成。这个可重用的, 用户创建的组件具有自定义的定义功能, 并且可以像其他任何组件一样将验证器, 转换器和侦听器连接到该组件。包含标记标签和其他组件的任何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的文件夹中。
JSF复合组件

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

文章图片

    推荐阅读