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 ...
随机推荐
- iptables学习02-nat表应用
nat表应用实验 第一步 准备工作 A机器两块网卡ens33(192.168.2.106).再添加一块自定义网卡ens37(192.168.100.1),添加到LAN内网区段(自定义名字,写什么无所谓 ...
- MVC05
1. 添加搜索功能 如何实现url添加查询字符串实现查询指定项目的功能? 来到MovisController,修改Index方法如下 public ActionResult Index(string ...
- 利用GitHub制作在线炫酷简历
首先我们先体验一下炫酷简历.然后决定我们要不要使用. https://jessezhao1990.github.... 如何使用本项目部署你自己的在线简历 1. 书写简历 在src文件夹里面有个con ...
- html5调用摄像头功能
前言 前些天,线上笔试的时候,发现需要浏览器同意开启摄像头,感觉像是 js 调用的,由于当时笔试,也就没想到这么多
- React的组件
React的组件化思想尤为明显,一切皆组件,觉着比Vue的组件化思想更加凸显. const PacketBG = (props) =>( <div className="pack ...
- Core + Vue 后台管理基础框架0——开篇
1.背景 最近,打算新开个项目,鉴于团队技术栈,选型.net core + vue,前后端分离.本打算捡现成的轮子的,github上大致逛了逛,总发现这样那样的不太适合心中那些“完美实践”,例如:Ab ...
- linux最常用命令记录(一)
一.vim个人最常用设置: vim .vimrc 然后添加以下内容 set nu set tabstop=4 set encoding=utf-8 二.查看磁盘空间相关命令 1.df -h 查看硬 ...
- 致远·面向人工智能-逐浪CMS v8.1.2全面发布[全球首个基于dotNET core3.0的中文CMS]
原文:https://www.z01.com/down/3484.shtml 再远, 我都不会停息, 因为技术而生, 因为技术而强, 这是逐浪软件的命与根! 全新打造, 三百多项超级功能, 助你十分钟 ...
- R中的Regex
Description grep.grepl.regexpr.gregexpr和regexec在字符向量的每个元素中搜索与参数模式匹配的参数:它们在结果的格式和详细程度上有所不同. sub和gsub分 ...
- selenium (四) WebDriverWait 与 expected_conditions
在介绍WebDriverWait之前,先说一下,在selenium中的两种等待页面加载的方式,第一种是隐式等待,在webdriver里面提供的implicitly_wait()方法,driver.im ...