了解 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 页面源码发送给浏览器用于显示页面

Visualforce 页面的生命周期的更多相关文章

  1. 重新想象 Windows 8 Store Apps (70) - 其它: 文件压缩和解压缩, 与 Windows 商店相关的操作, app 与 web, 几个 Core 的应用, 页面的生命周期和程序的生命周期

    [源码下载] 重新想象 Windows 8 Store Apps (70) - 其它: 文件压缩和解压缩, 与 Windows 商店相关的操作, app 与 web, 几个 Core 的应用, 页面的 ...

  2. 【Framework】深入研究Asp.net页面的生命周期

    介绍 Asp.net是微软.Net战略的一个组成部分.它相对以前的Asp有了很大的发展,引入了许多的新机制.本文就Asp.net页面的生命周期向大家做一个初步的介绍,以期能起到指导大家更好.更灵活地操 ...

  3. 与众不同 windows phone (27) - Feature(特性)之搜索的可扩展性, 程序的生命周期和页面的生命周期, 页面导航, 系统状态栏

    原文:与众不同 windows phone (27) - Feature(特性)之搜索的可扩展性, 程序的生命周期和页面的生命周期, 页面导航, 系统状态栏 [索引页][源码下载] 与众不同 wind ...

  4. WEB页面的生命周期,DOMContentLoaded,load,beforeunload,unload

    简言 理解WEB页面的生命周期,文档加载事件及顺序对WEB开发有十分的重要意义.如果不理解,在元素未加载就提前操作元素,则得不到想要的结果.而如果页面完全加载完成后,再进行操作,则又会影响用户体验. ...

  5. ASP.NET一个页面的生命周期

    在学习ASP.NET页面生命周期前,需要先了解之前的ASP.NET的基本运行机制,在理解ASP.NET基本运行机制原理后,下面将介绍ASP.NET的生命周期中,页面从创建到处理结束的过程中ASP.NE ...

  6. JSP页面的生命周期

    JSP页面的生命周期:我们假设要访问的jsp页面是index.jsp.首先,用户发出请求index.jsp:服务器会判断是否是第一次请求:如果是的话,JSP引擎会把该JSP文件转换成为一个Servle ...

  7. 「小程序JAVA实战」 小程序私有页面的生命周期以及导航(10)

    转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-10/ 之前讲了小程序全局的生命周期,今天咱们说说单个页面的生命周期!源码:https://gith ...

  8. 测试微信小程序页面的生命周期

    前言:本人是一个初学者,也是第一次写博客,敲键盘的时候还不知道发布后是什么效果,希望内容给其他初学的同学一点帮助,同时加深自己的理解.这篇随笔讲的是Page页面的生命周期,在开发中是基础中的基础,很容 ...

  9. 来扯点ionic3[3] 页面的生命周期事件,也就是凡间所说的钩子

    首先要做一个诚挚的道歉,作为大四狗,因为升学的事情,断更两个月,所以要感谢各位仁慈的读者没有脱粉(好像也就50个粉丝).这一节,我们延续上一节制作的页面,来讨论声明周期钩子的事情. 以我的经验来看,多 ...

随机推荐

  1. 阻止iOS Web APP中点击链接跳转到Safari 浏览器新标签页

    问题:ios封装完之后,点击里边的按钮会跳转到网页上 ——小卡遇到这个问题就是这样解决的↓↓↓ 解决方法:建议将代码放到</head>标签前,当然,另外存为一个js 文件引用也是可以的呦~ ...

  2. cocos2dx 3.17(Windows下) 接入skynet和sprotol

    大致流程一致,但是他的github上的版本,没有Windows的版本.打开他的win的工程会提示缺少一个模块. 本人环境 cocos2dx 3.17.1 当前最新 skynet-无视-当前最新 VS2 ...

  3. 物联网架构成长之路(41)-直播流媒体入门(RTSP篇)

    1. 搭建RTSP服务 首先现在音视频利器 ffmpeg,这个到http://www.ffmpeg.org/download.html 这里下载压缩包即可. 文档参考:http://trac.ffmp ...

  4. RestTemplate的三种请求方式

    转载 https://blog.csdn.net/qq_36364521/article/details/84203133

  5. 移动端js触摸touch详解(附带案例源码)

    移动端触摸滑动原理详解案例,实现过程通过添加DOM标签的触摸事件监听,并计算触摸距离,通过距离坐标计算触摸角度,最后通过触摸角度去判断往哪个方向触摸的. 触摸的事件列表 触摸的4个事件: touchs ...

  6. Spring源码系列 — BeanDefinition扩展点

    前言 前文介绍了Spring Bean的生命周期,也算是XML IOC系列的完结.但是Spring的博大精深,还有很多盲点需要摸索.整合前面的系列文章,从Resource到BeanDefinition ...

  7. NLP第一课(我也是才开始学)

    闲着无聊的时候,我就会问问自己,编程也有了五年经验了,除了增删改查,我还会什么,有一天我跳槽,去面试的时候,我能比那些年轻而且期望薪资待遇低的年轻毕业生,我有什么优势,而且我只是一个专科的机电系学生, ...

  8. Python - 列表 - 第八天

    Python 列表 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置类型,但最常见的 ...

  9. Ansible varialbes

    1.什么是变量? ​ 以一个固定的字符串,表示一个不固定的值 version: 1.12 2.定义变量? 1.在playbook中定义变量? vars 关键字 [root@manager projec ...

  10. Eureka自我保护机制源码解析

    默认情况下,当EurekaServer在一定时间内(默认90秒)没有接收到某个客户端实例的心跳,EurekaServer将会注销该实例.但是当网络分区故障发生时,客户端与EurekaServer之间无 ...