Visualforce 页面的生命周期

了解 Visualforce 页面的生命周期可以让我们明白其各个元素的执行顺序、改变逻辑,从而提高开发效率,避免不必要的错误。

官方文档中有详细的讲解。本文摘取其中的要点,作为一个总结。

Visualforce 页面的请求方式

Visualforce 页面包括两种请求方式:

  • get 请求,就是新建页面的请求,比如通过格式为 “/apex/XXX” 的 URL 请求打开名为 “XXX” 的页面
  • postback 请求,就是更新页面的请求,比如点击“保存”按钮更新页面的某些记录。当一个页面的 postback 请求被执行完毕以后,如果页面被重定向到和当前页面使用同一个控制器的另一个页面,那么会触发那个页面的 postback 请求

get 请求的生命周期

  1. 执行和页面相关联的控制器中的构造函数
  2. 如果页面中包含自定义组件,那么执行和自定义组件相关联的控制器的构造函数,然后计算自定义组件中的表达式的值
  3. 执行 assignTo 属性中定义的赋值逻辑
  4. 执行 “apex:page” 部分的 action 属性中定义的逻辑
  5. 执行其他预定义的逻辑,比如和变量相关的 get 和 set 函数等
  6. 如果页面中包含 “apex:form” 部分,将其中相关联的部分保存在视图状态(View State)中,便于以后更新
  7. 将生成的 HTML 页面源码发送给浏览器,然后浏览器显示页面,并执行其中的 JavaScript 代码

关于视图状态的删除:

  • 当有一个新的 get 请求时,原来的 Visualforce 页面中的视图状态会被删除
  • 当有一个 postback 请求时,比如用户重定向到使用同一个控制器的页面时,视图状态会被保留

postback 请求的生命周期

  1. 解码视图状态,因为它将被用于数据和页面的更新
  2. 解析相关联的表达式,执行相关的 set 函数
  3. 执行和请求相关联的函数,并更新相关联的数据
  4. 如果这次请求的结果是重定向到原来的页面,那么视图状态会被更新
  5. 将 HTML 页面源码发送给浏览器用于显示页面

猜你喜欢

转载自www.cnblogs.com/chengcheng0148/p/visualforce_page_lifecycle.html