论坛首页 入门技术论坛

JSF 生命周期

浏览 1622 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (2)
作者 正文
   发表时间:2010-03-12  

JSF是基于事件驱动的

         学习JSF 我们就要想想  我们的程序在C/S下是怎么运作的 !

其实它的生命周期是比较需要我们去了解,明确的

它的生命周期 有下面的几个阶段

 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)
    到此请求处理结束,根据导航规则,渲染响应的页面.依次执行

<!--EndFragment-->

---------------------------------------------------------------》

JSF有如下 事件

  

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

 

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


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

 

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

 

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

 

 

 

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

 通过 这个我们可以利用 来做权限验证    可以看  http://jsjxqjy.iteye.com/admin/blogs/613918

 

==================================

学习JSF  我们需要更多更丰富的组件,来完成一些功能 ,例如myface 的tomahawk  目前可以用的版本是 1.1.9

大家可以去 http://myfaces.apache.org/tomahawk/download.html       apache的官网下载  : tomahawk   组件目前支持 myface 1.2 及 sun的标准的JSF  1.2_12版本 ,

 

还有 jBoss开源组织的richFace  ,说实话 ,richface的确做得漂亮 .  目前我使用的版本是 3.3.2

 

================RichFaces 3.3.1:开发使用 文档

http://docs.jboss.org/richfaces/latest_3_3_X/en/devguide/html/index.html

 

 

//例子  richFace    demo
http://livedemo.exadel.com/richfaces-demo/richfaces/sortingFeature.jsf?c=sorting&tab=usage

 

 

论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics