JSF教程(8)——生命周期之Apply Request Values Phase
当一个组件树在一个postbacks请求中被恢复之后其中每一个组件从request的參数中取得各自的值,这里使用的是processDecodes方法。
这个值会保存在本地的每一个组件中,在源代码中此过程的代码较为简单,由于实现者将取值这个操作所有封装在processDecodes方法中。只是说实话JSF的这部分的实现非常失败。由于在UIViewRoot中有将近两千行代码,这,这。这……
(UIViewRoot.java中的processDecodes方法)
public void processDecodes(FacesContext context) {
initState();
notifyBefore(context, PhaseId.APPLY_REQUEST_VALUES);
try {
if (!skipPhase) {
if (context.getPartialViewContext().isPartialRequest() &&
!context.getPartialViewContext().isExecuteAll()) {
context.getPartialViewContext().processPartial(PhaseId.APPLY_REQUEST_VALUES);
} else {
super.processDecodes(context);
}
broadcastEvents(context, PhaseId.APPLY_REQUEST_VALUES);
}
} finally {
clearFacesEvents(context);
notifyAfter(context, PhaseId.APPLY_REQUEST_VALUES);
}
}
假设不论什么一个解码方法或者监听器的事件调用当前FacesContext实例中的renderResponse方法。JSF的实现者会跳过 Render Response步骤。事实上这非常好理解在处理组件所须要的值的时候假设遇到错误就会直接渲染页面向用户进行提示。可是笔者在JSF源代码中还未找到这部分的实现(衰~)
假设不论什么的事件在此步骤中加进队列JSF会将这个事件传递给相关的监听器。
假设页面上的一些组件中的immediate属性设置为true那么验证,转化以及事件绑定将都会在这个步骤中进行,假设不论什么转换失败这个组件会产生一个错误的提示信息。并将这个信息放到FacesContext的显示队列中。这个信息将会在Render Response步骤中显示出来,同理在验证步骤中的验证错误信息也会如此显示出来。
这时假设程序须要重定向到不同的应用资源或者要产生一个响应,而且这个响应没有包括不论什么JSF组件。那么就直接调用FacesContext.responseComplete方法。
在这个步骤的最后组件将会被赋予新的值,而且消息以及时间将会被放到队列其中等待处理。
假设当前请求被定义为一个局部的请求。那么局部内容会被从FacesContext中恢复。而且局部处理方法会被运行。
上面的每一个段话都是说的在此阶段要处理得各种不同的情况,或者说都是在processDecodes方法中应该考虑到的各个情况,Apply Request Values Phase一言以蔽之:拿值。
JSF教程(8)——生命周期之Apply Request Values Phase的更多相关文章
- JSF教程(10)——生命周期之Update Model Values Phase
在整个JSF生命周期中经历了取值.验证的阶段终于从request中拿到合理的值,以下就是在本阶段给相应的服务端对象(ManageBean)赋值了.JSF实现仅仅是去更新和input组件中value属性 ...
- Android Studio教程03-Activtiy生命周期的理解
目录 1. Activity 1.1. 安卓中的Activity定义和特性: 1.2. 注册Activity 1. Intent filters:设置默认开启的activity 1.3. Activi ...
- 前端组件化Polymer入门教程(5)——生命周期
以前我对生命周期这个概念还真不是很清楚,不过想想也简单,比如说人的生命周期,无非就是生老病死.而对于程序的生命周期就是说,它在每个阶段都会做不同的事,再比如说回调函数把,ajax返回的时候它才执行,那 ...
- Servlet生命周期方法,request.getRequestDispatcher
1,request.getRequestDispatcher 方法全称javax.servlet.ServletRequest.getRequestDispatcher(String) 2,在web. ...
- JSF教程(9)——生命周期之Process Validations Phase
在这个过程其中JSF的实现者使用processValidators方法处理全部在tree中的组件中注冊的验证器.验证的过程就是通过每一个组件已有的规则对其已经保存的值进行校验,同一时候也对输入的值进行 ...
- JSF教程(11)——生命周期之Invoke Application Phase
在这个阶段JSF实现将处理不论什么应用界别的事件,比如表单的提交或者链接点击后跳转到还有一个页面. 这时假设应用须要重定向不同 的web应用字眼或者产生一个资源其并不喊不论什么的JSF组件,那么就调用 ...
- JSF控件的immediate属性和页面生命周期
JSF中的控件基本都有immediate属性,对于这个属性的使用总结如下,更详细内容可参考Oracle官方文档. 1,为了更好的理解immediate属性,先看一下JSF页面的生命周期: JSF页面的 ...
- JSF生命周期&Facelets的生命周期
1.JSF生命周期 1)恢复视图(Restore View) 视图表示组成特定页面的所有组件.它被保存在 客户端(通常存储在隐藏字段中)或服务器中(通常在会话中).根据请求访问的视图ID(页面地址), ...
- 标准JSF的生命周期
JavaServer Faces (JSF) 是一种用于构建Java Web 应用程序的标准框架.它提供了一种以组件为中心的用户界面(UI)构建方法,从而简化了Java服务器端应用程序的开发.它的生命 ...
随机推荐
- linux系统——日志文件系统及性能分析
Linux日志文件系统及性能分析 日志文件系统可以在系统发生断电或者其它系统故障时保证整体数据的完整性,Linux是目前支持日志文件系统最多的操作系统之一,本文重点研究了Linux常用的日志文件系统: ...
- Codeforces Round #330 (Div. 2) B 容斥原理
B. Pasha and Phone time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- js属性prototype的使用
类似于一个构造化的类,使用prototype属性定义方法 <script> function Person(name) { this.name = name; alert(this.nam ...
- 回发或回调参数无效 “HtmlSelect”不能有类型为“LiteralControl”的子级
原文发布时间为:2009-11-14 -- 来源于本人的百度文章 [由搬家工具导入] 回发或回调参数无效 “HtmlSelect”不能有类型为“LiteralControl”的子级 出现这两个错误,一 ...
- cookie中存储json
原文发布时间为:2009-12-14 -- 来源于本人的百度文章 [由搬家工具导入] http://www.denisdeng.com/?p=563 最近的一个项目需要在cookie中存储json对象 ...
- 無法使用 system/bin/r 讀取 pmic pm8937 hardware regitster 的原因
Platform Qualcomm MSM8917 + PM8937 + PMI8940 起因 同事問我 PM8937 的 VREG_L17 如何設定成 3.3V, 從 PM8937 hardware ...
- 转:C#制作ORM映射学习笔记二 配置类及Sql语句生成类
在正式开始实现ORM之前还有一点准备工作需要完成,第一是实现一个配置类,这个很简单的就是通过静态变量来保存数据库的一些连接信息,等同于.net项目中的web.config的功能:第二需要设计实现一个s ...
- cisco packet 实验教程(一)
01. 开篇:组建小型局域网 实验任务 1.利用一台型号为2960的交换机将2pc机互连组建一个小型局域网: 2.分别设置pc机的ip地址: 3.验证pc机间可以互通. 实验设备 Switch_296 ...
- python笔记6:模块
6. 模块(一个 .py 文件称为一个模块Module) import 语句 类似 _xxx 和 __xxx 这样的 函数/变量 是非公开的(private),不应该被直接引用 函数定义: 外部不需要 ...
- Storyboards Tutorial 01
Storyboarding 是在ios 5时候引进入的一个非常出色的特性.节省了为app创建user interfaces的时间.