JSF之 UIComponent组件介绍

JSF中的组件树概念尤其重要。组件树大量使用了组合设计模式

为开发者提供了大量的包括日历,表格,树,列表等标准Web组件。

同时JSF还提供了大量的组件支持类,例如转换器(可以进行类型转换),验证器(进行数据验证),绘制器(不仅仅可以使用HTML来绘制组件)。接下来我们分析一下用户界面组件。

所有组件都要实现javax.faces.component.UIComponent接口。这个接口定义了浏览组件树,和支持Bean交互,管理组件(包括数据验证,数据转换和组件绘制)等任务和方法。

JSF提供了一个组件基类:javax.faces.component.UICompoentBase。它实现了一些基本的默认的组件方法,给开发人员提供了方便,一般来说,你只需要重写特定的方法即可。

JSF使用了适配器模式帮助你使用最少的代码完成大部分工作。

如果你想创建组件,那么有三条路可以走:

直接实现UIComponent接口

继承UIComponentBase类

继承已经存在的UIComponent实现

<!--[if !supportEmptyParas]--> <!--[endif]-->

已经存在的UIComponent组件类主要有如下:

       UIForm 表示一个输入表单

<!--[if !supportEmptyParas]--> <!--[endif]-->

       UICommand 表示一个可在激活时执行一个动作的命令组件

<!--[if !supportEmptyParas]--> <!--[endif]-->

       UIOutput 表示一个可显示值的组件

<!--[if !supportEmptyParas]--> <!--[endif]-->

       UIGraphic 表示一个可显示图像的组件

<!--[if !supportEmptyParas]--> <!--[endif]-->

       UIInput 表示一个可获取和显示用户输入的组件

<!--[if !supportEmptyParas]--> <!--[endif]-->

       UIParameter 用于为父组件配置参数值

<!--[if !supportEmptyParas]--> <!--[endif]-->

       UIPanel 表示一个面板(容器)组件

<!--[if !supportEmptyParas]--> <!--[endif]-->

       UISelectItem 表示选择组件中的一个选择项

<!--[if !supportEmptyParas]--> <!--[endif]-->

       UISelectItems表示选择组件中的多个选择项

<!--[if !supportEmptyParas]--> <!--[endif]-->

       UISelectBoolean表示一个具有boolean值的组件

<!--[if !supportEmptyParas]--> <!--[endif]-->

       UISelectOne 表示一个允许用户在一系列值中选择零个或一个值的组件

<!--[if !supportEmptyParas]--> <!--[endif]-->

       UISelectMany表示一个允许用户在一系列值中选择零个或多个值的组件

<!--[if !supportEmptyParas]--> <!--[endif]-->

事实上,一个JSF组件包括了三个部份:Tag、Component 与Renderer。

Tag就是之前使用的标签,它的目的在于设定Component属性,设定验证器,设定方法绑定等。

<!--[if !supportEmptyParas]--> <!--[endif]-->

Component请求时,每个Component会根据自己的ID值,从请求中取得相应的值,绑定到Bean。当请求来到应用程序时,需要通过解码(decode)来

HTTP中的内容转变成JSF组件需要的值,相对的,当JSF组件将值转变成HTTP字串资料送到客户端,供客户端显示,就称为编码(encode)。

Component可以自己实现编码,解码,也可以委托Renderer来实现。

<!--[if !supportEmptyParas]--> <!--[endif]-->

Renderer是一个可替换的组件,Component可以搭配不通的Renderer,而不用自定义编码,解码工作,这样Component可以达到重用。

你也可以编写自己的Renderer,如果你对前台的显示有自己独特的要求的话。甚至可以让你的系统在移动设备等不同的平台上应用。

<!--[if !supportEmptyParas]--> <!--[endif]-->

javax.faces.component.UIComponent

自订Component所要继承的父类别,但通常,您是继承其子类别,例如UIInput、UIOutput等等。

<!--[if !supportEmptyParas]--> <!--[endif]-->

javax.faces.webapp.UIComponentTag

自订JSF标签所要继承的父类别,继承它可以帮您省去许多JSF标签处理的细节。

<!--[if !supportEmptyParas]--> <!--[endif]-->

javax.faces.context.FacesContext
包括了JSF相关的请求资讯,您可以透过它取得请求物件或请求参数,或者是。

<!--[if !supportEmptyParas]--> <!--[endif]-->

javax.faces.application.Application物件

包括了一个应用程式所共享的资讯,像是locale、验证器、转换器等等,您可以透过一些 工厂方法 取得相关的资讯。

<!--[if !supportEmptyParas]--> <!--[endif]-->

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值