1, RestoreViewPhase(重载视图阶段):
如名所述,这一阶段重载画面的视图结构。首先试图从session,或cookie里还原JSF组件数,不能重载视图的话,JSF则认为该页面为当前用户第一次请求,直接跳转到renderView(画面重画阶段)对画面进行重画。
2, ApplyRequestValuesPhase(应用请求值阶段):
这一阶段主要把从浏览器过来的数据反映到对应的组件里。也可以看作为数据绑定。另外,这一阶段还做了一个很重要的处理。事件(EVENT)的队列入队处理(queueEvent),此处被加入队列中的消息事件将在第5个阶段被加以处理。
主 要调用过程:Lifecycle.execute() -> ApplyRequestValuesPhase.execute() -> Component.processDecodes() -> Component.decode() -> Component.valueBinding -> Renderer.decode() -> Component.queueEvent()
3, ProcessValidationsPhase(合法性检查阶段)
此阶段对数据进行合法性检查。检查有错误的情况下,跳转到画面重画阶段对画面进行重画。
主 要调用过程:Lifecycle.execute() -> ProcessValidationsPhase .execute() -> UIViewRoot.processValidators()->HtmlForm.processValidators()->UIInput.validate() -> Validators.validate()
4, UpdateModelValuesPhase(更新模型值阶段):
此阶段把经过变换(CONVERTER变换等)后的组件里值反映到BackingBean里。
主 要调用过程:Lifecycle.execute() -> UpdateModelValuesPhase.execute() -> UIViewRoot.processUpdates->HtmlForm.processUpdates->UIInput.processUpdates -> UIInput.updateModel –ValueBinding (#{beanName.propertyName}) BackingBean
5, InvokeApplicationPhase(用户应用程序处理/事件处理阶段):
这阶段主要调用用户的应用程序的事件处理方法,对真正的业务逻辑加以处理。它是JSF和用户程序进行接口的部分。
主 要调用过程:Lifecycle.execute() -> InvokeApplicationPhase.execute() -> >UIViewRoot.processApplication->HtmlCommandButton.broadcast->ActionListenerImpl.processAction – MethodBinding(#{beanName.methodName})--> BackingBean.eventMethod
6, render(页面重画阶段):同页面初始化的页面重画处理。上面说的很清楚,这里不做重复了。
如名所述,这一阶段重载画面的视图结构。首先试图从session,或cookie里还原JSF组件数,不能重载视图的话,JSF则认为该页面为当前用户第一次请求,直接跳转到renderView(画面重画阶段)对画面进行重画。
2, ApplyRequestValuesPhase(应用请求值阶段):
这一阶段主要把从浏览器过来的数据反映到对应的组件里。也可以看作为数据绑定。另外,这一阶段还做了一个很重要的处理。事件(EVENT)的队列入队处理(queueEvent),此处被加入队列中的消息事件将在第5个阶段被加以处理。
主 要调用过程:Lifecycle.execute() -> ApplyRequestValuesPhase.execute() -> Component.processDecodes() -> Component.decode() -> Component.valueBinding -> Renderer.decode() -> Component.queueEvent()
3, ProcessValidationsPhase(合法性检查阶段)
此阶段对数据进行合法性检查。检查有错误的情况下,跳转到画面重画阶段对画面进行重画。
主 要调用过程:Lifecycle.execute() -> ProcessValidationsPhase .execute() -> UIViewRoot.processValidators()->HtmlForm.processValidators()->UIInput.validate() -> Validators.validate()
4, UpdateModelValuesPhase(更新模型值阶段):
此阶段把经过变换(CONVERTER变换等)后的组件里值反映到BackingBean里。
主 要调用过程:Lifecycle.execute() -> UpdateModelValuesPhase.execute() -> UIViewRoot.processUpdates->HtmlForm.processUpdates->UIInput.processUpdates -> UIInput.updateModel –ValueBinding (#{beanName.propertyName}) BackingBean
5, InvokeApplicationPhase(用户应用程序处理/事件处理阶段):
这阶段主要调用用户的应用程序的事件处理方法,对真正的业务逻辑加以处理。它是JSF和用户程序进行接口的部分。
主 要调用过程:Lifecycle.execute() -> InvokeApplicationPhase.execute() -> >UIViewRoot.processApplication->HtmlCommandButton.broadcast->ActionListenerImpl.processAction – MethodBinding(#{beanName.methodName})--> BackingBean.eventMethod
6, render(页面重画阶段):同页面初始化的页面重画处理。上面说的很清楚,这里不做重复了。