jsf生命周期

王朝百科·作者佚名  2010-10-19  
宽屏版  字体: |||超大  

JSF是基于事件驱动的,首先介绍JSF的事件侦听。介绍中我仅仅给大家提供简单的场景。不过我需要首先申明,思考这些事件的时候,你最好先用C/S架构下的模式考虑她的运作模式,再用web下js调度动作的方式去认识执行过程。

1)动作事件:Action Event:普通动作响应

actionEvent是最普通的事件,任何command组件(button,link等,请参见UICommand)通过注册actionListener均可出发此事件侦听响应,简单说,用户有意义的操作,即可触发。

2)即时事件:Immediate Event:立即处理,不验证/转换/更新模型值(即bean不会保存属性)

即时事件,立即触发,在JSF生命周期中,让恢复试图之后,获取请求值,立即触发。验证、转化、更新模型值被略过,当然更多的情况下,你需要一个为被注册的UI组件binding到后台bean中,别忘了,你使用即时事件的初衷是什么??就是我只想让程序关注此组件,并排斥其他组件或者级联组件的操作。场景:单一表单中,使用“检测用户名是否存在”。立即时间,常用来做bean层面即时服务,以执行action为主要目的。

3)值改变事件:Value Change Event:选择UI值改变后,级联调度.如果国际化中选择语言.

值改变事件,如果一个输入(UIInput)、选择(UISelects)组件的值发生改变,将会执行的侦听。所谓的值改变,就是表单中local值和submit值发生偏移,local值就是页面渲染时上一个生命周期中传递的值,简单说就是表单中原来展示的值(server端生成的组件值,在周期中编码进去)。。submit值,就是面向用户或者操作者主动输入的客户端值。

比如:表单展示时,server端为一个下拉菜单赋值为1(local值),如果用户选择了2(submit值).请你用相同的思维去考虑输入框。

如果值改变,那么就会被执行,最好的场景就是:国际化中选择语言,然后把最新的语言元素,广播到整个站点。

4)阶段事件:Phase Event:监听响应的JSF生命周期

JSF的运行大致分为6个阶段,具体如下(JSF生命周期)。当然这类事件,可以注册到组件,但是更多的时候,用来监控站点中特殊组件的数据操作。

2.JSF生命周期

1)恢复视图(Restore View)

根据请求访问的视图ID(页面地址),重建JSF 组件DOM树。如果JSF页面是第一次访问,也即是试图ID在内存中没没有存根,那么JSF会在内存中构建JSF组件的DOM树。但是组件并没有值,只是一个模子。。

2)应用请求值(Apply Request Values)

JSF组件获取请求中的属于自己的值,包括Local值,和submit值.同时处理转换,转换成功,更新local值(submit转换结果),当然过程没有那么简单,JSF处理器有自己的一套解码过程。

3) 执行验证

如果组件注册验证器,依次执行验证.

4)更新模型值:如果所有的组件本地值转换验证等均成功,此时JSF就会根据EL处理关联的bean,并更新bean绑定值.在此处JSF会根据EL绑定加载配置的后台bean。

5)调用应用:调用注册的侦听器,然后执行事件驱动,获取下一个视图。侦听器此时可以有效的侦听到UI组件的各项数据,事件驱动部分即action可以有效的获取被更新的后台bean数据。执行自己的业务逻辑。

6)渲染响应(Render Response)

到此请求处理结束,根据导航规则,渲染响应的页面.依次执行…

 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝百科 版权所有