没有合适的资源?快使用搜索试试~ 我知道了~
《JSF自定义组件》
3星 · 超过75%的资源 需积分: 31 77 下载量 22 浏览量
2007-12-07
09:41:09
上传
评论
收藏 202KB PDF 举报
温馨提示
试读
18页
JSF自定义组件学习的好教材
资源详情
资源评论
资源推荐
JSF自定义组件
原文:
http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=2630
繁简转换与修订:jnzgy@163.com
声明:为方便简体中文读者阅读,特将原文转换为简体,对一些习惯用语做了替换,同时对部分内容
做了修订。版权归原文作者所有,未经许可,不得用于商业目的。
2006年3月28日
1. JSF 生命周期与组件概述............................................................................................................2
1.1 JSF 生命周期......................................................................................................................2
1.2 概述自定义组件................................................................................................................3
2. 简单实例......................................................................................................................................5
2.1 编码、解码........................................................................................................................5
2.2 组件标签............................................................................................................................8
2.3 使用自定义组件..............................................................................................................12
2.4 自定义 Renderer..............................................................................................................14
JSF 自定义组件
JSF 让您可以自定义组件,每个组件都是可替换的,这使得组件在搭配时更
有弹性,但相对的却使开发组件的过程复杂的多,这里对自定义JSF 组件只是个
入门砖,更多有关自定义组件的细节可得要专书来说明。
1. JSF 生命周期与组件概述
要开发JSF组件,您需要更深入了解JSF的一些处理细节,包括了JSF生命周
期以及JSF框架。
1.1 JSF 生命周期
JSF的每个组件基本上都是可替换的,像是转换器(Converter)、验证器
(Validator)、组件(Component)、绘制器(Renderer)等等,每个组件都可
以替换让JSF在使用时更有弹性,但相对的所付出的就是组件组合时的复杂性,
为此,最基本的,如果您打算自定义一些JSF组件,那么您对于JSF处理请求的每
个阶段必须要有所了解。
下图是JSF处理请求时的每个阶段与简单说明,起始状态即使用者端发出请
求时,终止状态则相当于绘制器发出响应时:
第 2 页 共 18 页
JSF 自定义组件
不包括事件处理,JSF总共必须经过六个阶段:
¾ 重建视图(Restore View)
对于选择的页面如果是初次浏览则建立新的组件树。如果是会话阶段,会从
客户端或服务器端的数据找寻数据以恢复每个组件的状态并重建组件树,如果不
包括请求参数,则直接跳过接下来的阶段直接绘制响应。
¾ 套用请求值(Apply Request Values)
每个组件尝试从到来的请求中找寻自己的参数并更新组件值,在这里会触发
ActionEvent,这个事件会被排入队列中,然后在调用应用程序阶段之后才会真
正由事件处理者进行处理。
然而对于设定immeduate为true的命令(Commamnd)组件来说,会立即处理
事件并跳过之后的阶段直接绘制响应,而对于设定immediate为true的输入
(Input)组件,会马上进行转换验证并处理值变事件,之后跳过接下来的阶段,
直接绘制响应。
¾ 执行验证(Process Validations)
进行转换与验证处理,如果验证错误,则会跳过之后的阶段,直接绘制响应,
结果是重新调用同一页绘制结果。
¾ 更新模型值(Update Model Values)
更新每一个与组件绑定的backing bean或模型对象。
¾ 调用应用程序(Invoke Application)
处理动作事件,并进行后端应用程序逻辑。
¾ 绘制响应(Render Response)
使用绘制器绘制页面。
如果您只是要“使用”JSF,则您最基本的只需要知道“执行验证”、“更
新模型值”、与“调用应用程序”这三个阶段及中间的事件触发,JSF参考实现
将这三个阶段之外的其它阶段的复杂性隐藏起来了,您不需要知道这几个阶段的
处理细节。
然而如果您要自定义组件,则您还必须知道“重建视图”、“套用请求值”
与“绘制响应”这些阶段是如何处理的,这几个阶段相当复杂,所幸的是您可以
使用JSF 所提供的框架来进行组件自定义,JSF提供的框架已经很大程度上降低
了组件制作的复杂性。
当然,即使JSF框架降低了复杂性,但实际上要处理JSF自定义组件还是很复
杂的一件事,在尝试开发自定义组件之前,您可以先搜寻一些网站,像是 Apache
MyFaces(
http://myfaces.apache.org/),看看是不是已经有相关类似的组件
已经开发完成,省去您重新自定义组件的气力。
1.2 概述自定义组件
所谓的“自定义JSF组件”是一个概略的称呼,事实上,一个JSF组件包括了
三个部份:Tag、Component 与Renderer。
Tag即之前一直在使用的JSF标签,类似于HTML标签,JSF标签主要是方便网
页设计人员进行版面配置与数据呈现的一种方式,实际的处理中,JSF标签的目
的在于设定Component属性、设定验证器、设定数据绑定、设定方法绑定等等。
第 3 页 共 18 页
JSF 自定义组件
Component的目的在于处理请求,当请求来到服务器端应用程序时,每一个
Component都有机会根据自己的client id,从请求中取得属于自己的值,接着
Component可以将这个值作处理,然后设定给绑定的bean。
当请求来到Web应用程序时,HTTP中的字符串内容可以转换为JSF组件所需的
值,这个动作称之为解码(decode),相对的,将JSF组件的值转换为HTTP字符
串数据并送至客户端,这个动作称之为编码(encode),Component可自己处理
编码、解码的任务,也可以将之委托给 Renderer来处理。
当您要自定义Component时,您可以继承UIComonent或其相关的子类,这要
根据您实际要自定义的组件而定,如果您要自定义一个输出组件,可以继承
UIOutput,如果要自定义一个输入组件,则可以继承UIInput,每一个标准的JSF
组件实际上都对应了一个UIComponent的子类,下图为一个大致的类继承结构图:
实际上要自定义一个组件是复杂的一件工作,您首先要学会的是一个完整的
自定义组件流程,实际上要自定义一个组件时,您可以参考一下网络上的一些成
品,例如 Apache MyFaces(
http://myfaces.apache.org/),接下来后面的几
个主题所要介绍的,将只是一个自定义组件的简单流程。
Renderer是一个可替换的组件,您的Component可以搭配不同的Renderer,
而不用自行担任绘制响应或解码的动作,这会让您的Component可以重用,当您
需要将响应从HTML转换为其它的媒介时(例如移动电话网络),则只要替换
Renderer就可以了,这是一个好处,或者您可以简单的替换掉一个Renderer,就
可以将原先简单的HTML响应,替换为有JavaScript功能的Renderer。
当您开始接触自定义组件时,您会开始接触到JSF的框架(Framework),也
许有几个类会是您经常接触的:
javax.faces.component.UIComponent
自定义Component所要继承的父类,但通常,您是继承其子类,例如UIInput、
UIOutput等等。
javax.faces.webapp.UIComponentTag
自定义JSF标签所要继承的父类,继承它可以帮您省去许多JSF标签处理的细
节。
第 4 页 共 18 页
剩余17页未读,继续阅读
benqend
- 粉丝: 1
- 资源: 14
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1