爪哇一角

共同探讨STRUTS#HIBERNATE#SPRING#EJB等技术
posts - 3, comments - 6, trackbacks - 0, articles - 99
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

九 UIComponent介绍

Posted on 2009-01-20 14:49 非洲小白脸 阅读(381) 评论(0)  编辑  收藏 所属分类: JSF

JSF中的组件树概念尤其重要。组件树大量使用了组合设计模式,为开发者提供了大量的包括日历,表格,树,列表等标准Web组件。

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

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

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

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

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

直接实现UIComponent接口

继承UIComponentBase类

继承已经存在的UIComponent实现

 

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

       UIForm 表示一个输入表单

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

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

 

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

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

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

 

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

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

 

javax.faces.component.UIComponent

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

 

javax.faces.webapp.UIComponentTag

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

 

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

 

javax.faces.application.Application物件

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

 


只有注册用户登录后才能发表评论。


网站导航: