JSF的事件和生命周期

时间:2022-03-07 20:03:17
OO中的事件,是对象通信的一种机制,对象通过响应彼此的事件相互协调一致。JSP没有事件,所以JSP的代码需要程序员自己去协调,什么时候执行什么代码,往往让程序员大费周章。如果说JSP代码是一群孩子的话,那么程序员就是这群孩子可怜的父母,吃喝拉撒全要操心,哪里能够集中精力做点事情!所以,小孩要上学,学知识可能只是一个借口,父母想找个老师代管,才是背后真正的原因。

    JSF就是程序员们所要寻找的老师,把代码片断交给JSF去管理,程序员就可以集中精力编写业务逻辑了。在JSF里,有四类事件。值改变事件,当用户在输入框中输入数据后发生;动作事件,当用户提交Form时发生;数据模型事件,当数据表的某行被选中时发生;生命周期事件,当生命周期从一个阶段进入另一个阶段时发生。除了生命周期事件,其他事件都是桌面程序中大家所熟知的,而生命周期事件可以想象成窗口事件,例如窗口的生成、关闭、激活等等。

    谈到JSF,就不能不谈谈JSF请求处理的生命周期。为什么很多人觉得JSF难学?都是生命周期惹的祸。JSP的生命周期只有一个阶段,而JSF却有6个阶段!为什么要这样呢?其实,这是JSF框架所必需的。JSF只有细分生命周期阶段,才能对Request和Response施加粒度足够细的控制,因为JSP那样粗粒度的控制,不足以支撑UI组件模型和事件模式。

    在我初学JSF时,生命周期成了我最大的障碍。不管我如何咬文嚼字地推敲JSF规范中关于生命周期的描述,我都无法弄明白到底专家们在说什么。甚至直到我完成了我的首个JSF程序的开发,我还是不懂。这让我十分的惴惴不安,时时担心自己误入歧途。奇怪的是,不论是Sun的Tutorial,还是JSF的官方规范都把生命周期放在“头版头条”的位置,一开篇就大肆推销生命周期概念,生命周期真的那么重要吗?

    这绝对是一个错误!生命周期是JSF的核心,但不是程序员的必修课,初涉JSF的程序员,根本没有必要浪费精力在生命周期晦涩的概念里纠缠,不懂生命周期,照样可以用JSF来编程。花很少的时间看看各个UI组件的功能和属性,然后弄明白各类事件的含义以及应该如何响应这些事件,了解一下JSF可配置的页面导航机制,再搞清楚Managed Bean是什么东西,马上就可以动手编写你的第一个JSF程序了!

    生命周期当然重要,不理解生命周期是难以在JSF中深入下去的。但是,如果有机会让我来写JSF的入门教程的话,我会把生命周期放在最后一章,等大家都有了JSF的实践经验,对JSF是如何简化Java的Web编程有了感性的认识,再来深入剖析JSF的生命周期,才能水到渠成,一点就通。