mar*_*zzz 1 jsf page-lifecycle facelets javabeans jsf-2
今天我想了解JSF生命周期的一些功能.让我开始吧:
1 - 阶段2:应用请求值 - 在此阶段,视图中的每个组件将在请求中搜索其值并将新值设置为它们
嗯,好的.因此,View将由于之前的Beans参数而构建.之后,有一个部分视图,使用请求值生成.(对吧?之后,在3°阶段,他们将进行比较).但是,例如,如果在创建最后一个视图期间缺少请求列表中的值?值将为null?
2 - 阶段5:调用应用程序 - 一旦将请求的所有值成功设置到辅助bean,将处理在应用请求值阶段排队的操作事件.在我们的例子中,提交按钮动作方法.
这根本不清楚.此时我(在bean上)从前一阶段更新的值(如果验证和应用请求未失败).好的,现在发生了什么?在处理申请请求值阶段期间排队的操作事件的含义是什么?这意味着,例如,如果操作是提交,则该过程已完成?这就是为什么ajax调用,如果不在2°阶段呈现,将会失败?或者失败的地方?
3 - 阶段6:渲染响应 - 在此阶段,组件树将呈现给客户端.
这意味着使用更新的bean值更新服务器上的View?然后,在此之后,HTML代码是从此视图创建的?或者只是它制作了HTML代码并保存了View状态?
希望你能帮我 :)
阶段2:应用请求值 - 在此阶段,视图中的每个组件将在请求中搜索其值并将新值设置为它们
嗯,好的.因此,View将由于之前的Beans参数而构建.之后,有一个部分视图,使用请求值生成.(对吧?之后,在3°阶段,他们将进行比较).但是,例如,如果在创建最后一个视图期间缺少请求列表中的值?值将为null?
基本上以下是发生在幕后(这里,input是UIInput和request是HttpServletRequest):
if (input.isRendered()) {
String value = request.getParameter(input.getClientId());
if (value != null) {
input.setSubmittedValue(value);
}
}
Run Code Online (Sandbox Code Playgroud)
因此,如果没有请求参数,它们将不受影响.它们不会被设置,null只是保持默认.
阶段5:调用应用程序 - 一旦将请求的所有值成功设置到辅助bean,将处理在应用请求值阶段排队的操作事件.在我们的例子中,提交按钮动作方法.
这根本不清楚.此时我(在bean上)从前一阶段更新的值(如果验证和应用请求未失败).好的,现在发生了什么?在处理申请请求值阶段期间排队的操作事件的含义是什么?这意味着,例如,如果操作是提交,则该过程已完成?这就是为什么ajax调用,如果不在2°阶段呈现,将会失败?或者失败的地方?
在第二阶段,基本上也会发生以下情况(这里,command是UICommand,request现在HttpServletRequest和ActionEvent是ActionEvent):
if (command.isRendered()) {
String value = request.getParameter(command.getClientId());
if (value != null) {
command.queueEvent(new ActionEvent(command)); // Queue for INVOKE_ACTION.
}
}
Run Code Online (Sandbox Code Playgroud)
然后,在调用应用程序阶段期间,将调用排队等待特定阶段的所有事件.
阶段6:渲染响应 - 在此阶段,组件树将呈现给客户端.
这意味着使用更新的bean值更新服务器上的View?然后,在此之后,HTML代码是从此视图创建的?或者只是它制作了HTML代码并保存了View状态?
在此阶段,JSF遍历组件树,所有组件都将被编码(将调用Renderer所有组件,默认情况下为HTML渲染器).在编码期间,将仅从模型获得值.视图本身不会更新.基本上:
facesContext.getViewRoot().encodeAll();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3143 次 |
| 最近记录: |