Visualforce 页面的生命周期
了解 Visualforce 页面的生命周期可以让我们明白其各个元素的执行顺序、改变逻辑,从而提高开发效率,避免不必要的错误。
在官方文档中有详细的讲解。本文摘取其中的要点,作为一个总结。
Visualforce 页面的请求方式
Visualforce 页面包括两种请求方式:
- get 请求,就是新建页面的请求,比如通过格式为 “/apex/XXX” 的 URL 请求打开名为 “XXX” 的页面
- postback 请求,就是更新页面的请求,比如点击“保存”按钮更新页面的某些记录。当一个页面的 postback 请求被执行完毕以后,如果页面被重定向到和当前页面使用同一个控制器的另一个页面,那么会触发那个页面的 postback 请求
get 请求的生命周期
- 执行和页面相关联的控制器中的构造函数
- 如果页面中包含自定义组件,那么执行和自定义组件相关联的控制器的构造函数,然后计算自定义组件中的表达式的值
- 执行 assignTo 属性中定义的赋值逻辑
- 执行 “apex:page” 部分的 action 属性中定义的逻辑
- 执行其他预定义的逻辑,比如和变量相关的 get 和 set 函数等
- 如果页面中包含 “apex:form” 部分,将其中相关联的部分保存在视图状态(View State)中,便于以后更新
- 将生成的 HTML 页面源码发送给浏览器,然后浏览器显示页面,并执行其中的 JavaScript 代码
关于视图状态的删除:
- 当有一个新的 get 请求时,原来的 Visualforce 页面中的视图状态会被删除
- 当有一个 postback 请求时,比如用户重定向到使用同一个控制器的页面时,视图状态会被保留
postback 请求的生命周期
- 解码视图状态,因为它将被用于数据和页面的更新
- 解析相关联的表达式,执行相关的 set 函数
- 执行和请求相关联的函数,并更新相关联的数据
- 如果这次请求的结果是重定向到原来的页面,那么视图状态会被更新
- 将 HTML 页面源码发送给浏览器用于显示页面
Visualforce 页面的生命周期的更多相关文章
- 重新想象 Windows 8 Store Apps (70) - 其它: 文件压缩和解压缩, 与 Windows 商店相关的操作, app 与 web, 几个 Core 的应用, 页面的生命周期和程序的生命周期
[源码下载] 重新想象 Windows 8 Store Apps (70) - 其它: 文件压缩和解压缩, 与 Windows 商店相关的操作, app 与 web, 几个 Core 的应用, 页面的 ...
- 【Framework】深入研究Asp.net页面的生命周期
介绍 Asp.net是微软.Net战略的一个组成部分.它相对以前的Asp有了很大的发展,引入了许多的新机制.本文就Asp.net页面的生命周期向大家做一个初步的介绍,以期能起到指导大家更好.更灵活地操 ...
- 与众不同 windows phone (27) - Feature(特性)之搜索的可扩展性, 程序的生命周期和页面的生命周期, 页面导航, 系统状态栏
原文:与众不同 windows phone (27) - Feature(特性)之搜索的可扩展性, 程序的生命周期和页面的生命周期, 页面导航, 系统状态栏 [索引页][源码下载] 与众不同 wind ...
- WEB页面的生命周期,DOMContentLoaded,load,beforeunload,unload
简言 理解WEB页面的生命周期,文档加载事件及顺序对WEB开发有十分的重要意义.如果不理解,在元素未加载就提前操作元素,则得不到想要的结果.而如果页面完全加载完成后,再进行操作,则又会影响用户体验. ...
- ASP.NET一个页面的生命周期
在学习ASP.NET页面生命周期前,需要先了解之前的ASP.NET的基本运行机制,在理解ASP.NET基本运行机制原理后,下面将介绍ASP.NET的生命周期中,页面从创建到处理结束的过程中ASP.NE ...
- JSP页面的生命周期
JSP页面的生命周期:我们假设要访问的jsp页面是index.jsp.首先,用户发出请求index.jsp:服务器会判断是否是第一次请求:如果是的话,JSP引擎会把该JSP文件转换成为一个Servle ...
- 「小程序JAVA实战」 小程序私有页面的生命周期以及导航(10)
转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-10/ 之前讲了小程序全局的生命周期,今天咱们说说单个页面的生命周期!源码:https://gith ...
- 测试微信小程序页面的生命周期
前言:本人是一个初学者,也是第一次写博客,敲键盘的时候还不知道发布后是什么效果,希望内容给其他初学的同学一点帮助,同时加深自己的理解.这篇随笔讲的是Page页面的生命周期,在开发中是基础中的基础,很容 ...
- 来扯点ionic3[3] 页面的生命周期事件,也就是凡间所说的钩子
首先要做一个诚挚的道歉,作为大四狗,因为升学的事情,断更两个月,所以要感谢各位仁慈的读者没有脱粉(好像也就50个粉丝).这一节,我们延续上一节制作的页面,来讨论声明周期钩子的事情. 以我的经验来看,多 ...
随机推荐
- Python 中的时间处理包datetime和arrow
Python 中的时间处理包datetime和arrow 在获取贝壳分的时候用到了时间处理函数,想要获取上个月时间包括年.月.日等 # 方法一: today = datetime.date.today ...
- 剑指offer:对称的二叉树(镜像,递归,非递归DFS栈+BFS队列)
1. 题目描述 /** 请实现一个函数,用来判断一颗二叉树是不是对称的. 注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的 */ 2. 递归 思路: /** 1.只要pRoot.left和 ...
- LeetCode 430:扁平化多级双向链表 Flatten a Multilevel Doubly Linked List
您将获得一个双向链表,除了下一个和前一个指针之外,它还有一个子指针,可能指向单独的双向链表.这些子列表可能有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示. 扁平化列表,使所有结点 ...
- Springboot2 Metrics之actuator集成influxdb, Grafana提供监控和报警
到目前为止,各种日志收集,统计监控开源组件数不胜数,即便如此还是会有很多人只是tail -f查看一下日志文件.随着容器化技术的成熟,日志和metrics度量统计已经不能仅仅靠tail -f来查看了,你 ...
- 修改设置notepad++默认保存文件格式
设置notepad++保存文件的默认格式 在使用notepad++新建文件保存后,有的时候会有一个all type 然后没有文件扩展名,很不方便 网上有很多帖子都是如下图所示的提示,但是却不生效
- 升级 ASP.NET Core 3.0 设置 JSON 返回 PascalCase 格式与 SignalR 问题
由于一些 JS 组件要求 JSON 格式是 PascalCase 格式,新版本 ASP.NET Core 3.0 中默认移除了 Newtonsoft.Json ,使用了微软自己实现的 System.T ...
- WebApi生成文档
本文包括两个部分: webapi中使用swagger 修改webapi的路由和默认参数 WebApi中使用swagger 项目打开之后,选择 引用,右键,管理NuGet程序包 浏览,搜索swagger ...
- NumPy 文件数据读写
写数据 NumPy 数组可以使用 np.save 方法保存到本地磁盘中,默认扩展名是 .npy,并且是未压缩的二进制格式. import numpy as np a = np.array([[0, 1 ...
- [笔记] Git 冲突处理
这是一篇关于 git 解冲突的笔记,没有什么干货. TortoiseGit 小乌龟 通常情况下,会比较喜欢使用小乌龟解冲突,详见:git 使用 tortoisegit 解冲突 但部分复杂的场景,反而需 ...
- 改变src图片不更新
var url = response + "?r" + Math.random();[完美解决修改src不更新图片]$('#loginimage').attr("src& ...