Building Applications with Force.com and VisualForce (DEV401) (二五):Visualforce Controller
Module Objectives
1.Identify the functionality that comes with each standard controller
2.Realize when you would need to move to Apex for creating custom controllers or extensions.
3.Compare and contrast controllers and extensions.
Module Agenda
1.Controller Overview
2.Standard Controllers
3.Custom Controllers
4.Controller Extensions
Visualforce Controllers
1.A Visualforce controller is an Apex class that specifies the data available and the behavior when a user interacts with components on a page.
2.Standard Controllers
- Are provided for all API entities/objects,such as Account,Contact,Opportunity,etc.,as well as custom objects.
- Provide access to standard Salesforce data and behavior.
- Are available to work with record lists.
- Are invlked by using:<apex:page standardController="Contact">
What are Custom Controllers and Controller Extensions?
1.A custom controller is an Apex class that implements all of the logic for a page without leveraging a standard controller. Use custom controllers when you want your Visualforce page to run entirely in system mode, which does not enforce the permissions and field-level security of the current user.
2.A controller extension is an Apex class that extends the functionality of a standard or custom controller. Use controller extensions when:
You want to leverage the built-in functionality of a standard controller but override one or more actions, such as edit, view, save, or delete.
You want to add new actions.
3.You want to build a Visualforce page that respects user permissions. Although a controller extension class executes in system mode, if a controller extension extends a standard controller, the logic from the standard controller does not execute in system mode. Instead, it executes in user mode, in which permissions, field-level security, and sharing rules of the current user apply.
Standard Controllers
1.Standard controllers provide the same common data and functionality and logic used for standard Salesforce pages.
- All standard and custom objects that can be queried using the API have a standard controller.
2.Standard controllers are associated on Visualforce pages using:
- <apex: page standardController="Object">
Standard Controllers
1.Standard controllers include a getter method to return the record specified by the id query string parameter(on the URL).
- This allows the page to access data using the {!object} merge field syntax.
- THis also allows developers to test using URL parameters with known IDs.
Standard Controllers
1.As with API queries, you cna use merge field expression syntax to retrievee data from related records:
- You can traverse up five lvels of child-to-parent relationships.
.Example:{!contact.Account.Owner.FirstName}
-You can traverse down one level of parent-to-child relationships to return an array of all child rows for that parent.
.Example:{!account.Contacts}
Standard Controllers
1.Action methods perform logic or navigation when a page event occurs.
- Action methods are invoked using the {!actionmethod} syntax.
2.Standard controllers define the following actionmethods:
- save ()
- quicksave ()
- edit ()
- delete ()
- cancel ()
Standard List Controllers
1.For almost every standard controller there existent standard list controller that allows you to create pages that display and act on a set of records, such as list page,related list,and mass action pages.
2.To select the standard list controller instead of the regular standard controller,use the recordSetVar attribute on the page tag.
- <apex;page standardController="Account" recordSetVar="accounts">
- This also creates a variable that represents the record set for the page.
Pagination with a List Controller
1.You can add pagination to a page using a list controller by utilizing the next and previous actions. For example, if you create a page with the following markup:
<apex:page standardController="Account" recordSetvar="accounts">
<apex:pageBlock title="Viewing Accounts">
<apex:form id="theForm">
<apex:pageBlockSection >
<apex:dataList var="a" value="{!accounts}" type="1">
{!a.name}
</apex:dataList>
</apex:pageBlockSection>
<apex:panelGrid columns="2">
<apex:commandLink action="{!previous}">Previous</apex:commandlink>
<apex:commandLink action="{!next}">Next</apex:commandlink>
</apex:panelGrid>
</apex:form>
</apex:pageBlock>
</apex:page>
Custom Controllers
1.A custom controller is an Apex class that implement all of the logic for a page without leveraging a standard controller.
- Custom controllers typically define three different types of methods:
.Getter methods to retrieve data from the controller.
.Setter methods to pass data from the page to the controller.
.Action Methods to perform logic.
- Navigation action methods to take the usersomewhere else.
- Custom controllers mustexplicitly define all action methods, including those found in standard controllers.
Custom Controllers:Getter Methods
1.Getter methods provide ways to return object data in a Visualforce page.
2.Getter methods take the form:getDataname() which uses the name of the data retrueved.
3.In a Visualforce page, the data can be accessed using the {!Dataname} merge field syntax.
Setter Methods
1.Setter methods pass user-specified values from page markup to a controller. Any setter methods in a controller are automatically executed before any action methods.
2.For example, the following markup displays a page that implements basic search functionality for Leads. The associated controller includes getter and setter methods for the search box input, and then uses the search text to issue a SOSL query when the user clicks Go!. Although the markup doesn’t explicitly call the search text setter method, it executes before the doSearch action method when a user clicks the command button:
<apex:page controller="theController">
<apex:form>
<apex:pageBlock mode="edit" id="block">
<apex:pageBlockSection>
<apex:pageBlockSectionItem>
<apex:outputLabel for="searchText">Search Text</apex:outputLabel>
<apex:panelGroup>
<apex:inputText id="searchText" value="{!searchText}"/>
<apex:commandButton value="Go!" action="{!doSearch}"
rerender="block" status="status"/>
</apex:panelGroup>
</apex:pageBlockSectionItem>
</apex:pageBlockSection>
<apex:actionStatus id="status" startText="requesting..."/>
<apex:pageBlockSection title="Results" id="results" columns="1">
<apex:pageBlockTable value="{!results}" var="l"
rendered="{!NOT(ISNULL(results))}">
<apex:column value="{!l.name}"/>
<apex:column value="{!l.email}"/>
<apex:column value="{!l.phone}"/>
</apex:pageBlockTable>
</apex:pageBlockSection>
</apex:pageBlock>
</apex:form>
</apex:page>
Action Methods
1.Action methods perform logic or navigation when a page event occurs, such as when a user clicks a button, or hovers over an area of the page. Action methods can be called from page markup by using {! } notation in the action parameter of one of
the following tags:
- <apex:commandButton> creates a button that calls an action
- <apex:commandLink> creates a link that calls an action
- <apex:actionPoller> periodically calls an action
- <apex:actionSupport> makes an event (such as “onclick”, “onmouseover”, and so on) on another, named component, call an action
-<apex:actionFunction> defines a new JavaScript function that calls an action
-<apex:page> calls an action when the page is loaded
2. For example, in the sample page in Building a Custom Controller, the controller's save method is called by the action parameter of the <apex:commandButton> tag. Other examples of action methods are discussed in Defining Action Methods.
Exercise 5-1:Creating a Visualforce Page with a Custom Controller
1.Goal(s):
- Create a Visualforce page to accompany a custom controller
2.Scenario:
- Universal Containers wants to start learning more about controllers,and at the same time create a special search page for candidate information that allows you to search for a candidate by first name,last name,or email all at he same time.
3.Tasks:
- Add the pre-existing Visualforce page to your org.
- Add the controller class.
- Test the page by searching for candidates.
Building Applications with Force.com and VisualForce (DEV401) (二五):Visualforce Controller的更多相关文章
- Building Applications with Force.com and VisualForce(Dev401)(十八):Visualforce Pages: Introduction to Visualforce
Dev401-020:Visualforce Pages: Introduction to Visualforce Course Objectives1.Understand the benefits ...
- Building Applications with Force.com and VisualForce (DEV401) (二四):JavaScript in Visualforce
Dev401-025:Visualforce Pages: JavaScript in Visualforce Module Objectives1.Describe the use of AJAX ...
- Building Applications with Force.com and VisualForce(Dev401)(十):Designing Applications for Multiple Users: Building Business Processes that You Want
Dev401-011: Building Business Processes that You Want Course Objectives1.Describe the capabilities o ...
- Building Applications with Force.com and VisualForce (DEV401) (四):Building Your user Interface
Dev 401-004:Application essential:Building Your user Interface: Module Agenda1.Custom Applications2. ...
- Building Applications with Force.com and VisualForce (DEV401) (三):Application Essential:Building Your Data Model
Dev 401-003:Application Essential:Building Your Data Model Object Relationships1.Link two objects- P ...
- Building Applications with Force.com and VisualForce (DEV401) (二) : Application Essentials:Designing Application on the Force.com Platform
Dev 401-002:Application Essentials:Designing Application on the Force.com Platform Course Objectives ...
- Building Applications with Force.com and VisualForce(Dev401)(七):Designing Applications for Multiple users:Managing your users' experience I
Dev 401-007 Designing Applications for Multiple users: Managing your users' experience part 1 Module ...
- Building Applications with Force.com and VisualForce (DEV401) (二一):Visualforce Componets (Tags) Library Part 1
Dev401-022:Visualforce Pages: Visualforce Componets (Tags) Library Part 1 Module Objectives1.List ke ...
- Building Applications with Force.com and VisualForce (DEV401) (二三):Visualforce Componets (Tags) Library Part III
Dev401-024:Visualforce Pages: Visualforce Componets (Tags) Library Part IIIStatic Resources1.Static ...
随机推荐
- GIT 使用(二):创建仓库并提交代码
基本操作 所用命令使用 windows 下安装 git-bash 运行 Table of Contents 先决条件 已经安装了 GIT 客户端 已经设置用户信息 如果没做可以看安装和配置 获取 Gi ...
- Context与ApplicationContext的区别
ApplicationContext并没有这个类,其实更应该叫做:Activity与Application在作为Context时的区别.嗯,的确是这样的,大家在需要Context的时候,如果是在Act ...
- audioContext.decodeAudioData 返回null 错误
此问题并不是100%出现.没想到国外大神已经有处理此问题的经验 原贴地址: https://stackoverflow.com/questions/10365335/decodeaudiodata-r ...
- C++ 命令行窗口打印二叉树(图形)
写这个程序的目的是学习数据结构的时候方便调试,学习起来也比较直观. 这个是我测试SplayTree时候的gif STEP 1 新建一个头文件,命名为DrawATree.hh, 将以下内容复制进去 #i ...
- js数组方法全
js数组方法大全 一:前言 转载 作者:九夏 出处:https://www.cnblogs.com/jiuxia/ 我们在学到js中数组的时候,我们会接触到js中数组 ...
- Ansible-免密登录与主机清单Inventory
Ansible的指定用户与密码登录.免密登录.指定ssh端口以及主机清单Inventory配置 在实际使用中并不需要对ansible配置进行修改,或者说只有需要的时候才修改ansible配置. 添加用 ...
- ggplot2(11) 总结回顾&案例练习
从2020年2月20到2月27日,3月13日到2020年3月16日,学习了ggplot2:数据分析与图形艺术(哈德利·威克姆 著 统计之都 译),历时12天.另外,3月6日到3月9日参加了美赛,也用到 ...
- 推荐一个学习python非常好的网站
推荐一个入门python非常好的网站(也可以学习JAVA)非常适合入门,不说多易于理解,也是比较亲民的0基础学习教程,还免费…… 网址:https://www.liaoxuefeng.com/(廖雪峰 ...
- Java反射之成员变量的反射
上一篇介绍了Java反射之构造方法反射.这次我们在说一说如何反射类中的成员变量并用作一个简单案例. [一]Field类 Filed类代表字段,包含字段拥有的所有属性,比如修饰符,变量类型,值等等,Fi ...
- redis的批量操作命令pipeline(PHP实现)
redis执行一条命令有四个过程:发送命令.命令排队.命令执行.返回结果:整个过程是一个往返时间(RTT).如果有n条命令,就会消耗n次RTT.Redis的客户端和服务端可能部署在不同的机器上.在两地 ...