Dev401-026:Visualforce Pages: 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的更多相关文章

  1. 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 ...

  2. 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 ...

  3. 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 ...

  4. 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. ...

  5. 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 ...

  6. 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 ...

  7. 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 ...

  8. 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 ...

  9. 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 ...

随机推荐

  1. 事务Transaction

    目录 为什么写这系列的文章 事务概念 ACID 并发事务导致的问题 脏读(Dirty Read) 非重复读(Nonrepeatable Read) 幻读(Phantom Reads) 丢失修改(Los ...

  2. JavaScript中prompt的使用

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.js * 作者:常轩 * 微信公众号:Worldhel ...

  3. 彻底消灭if-else嵌套

    一.背景 1.1 反面教材 不知大家有没遇到过像横放着的金字塔一样的if-else嵌套: if (true) { if (true) { if (true) { if (true) { if (tru ...

  4. Harbor镜像漏洞扫描

    Harbor镜像漏洞扫描 闲聊:我们知道 镜像安全也是容器化建设中一个很重要的环节,像一些商业软件如:Aqua就很专业但是收费也是很昂贵的,今天我们介绍下Harbor自带的镜像扫描器. 一.安装最新版 ...

  5. 死磕Lambda表达式(二):Lambda的使用

    城市就是森林,每一个男人都是猎手,每一个女人都是陷阱.--<三体> 在哪使用Lambda表达式? 在上一篇文章(传送门)中介绍了Lambda表达式的基本语法,其中的举了一个Lambda表达 ...

  6. CVE-2020-7245 CTFd v2.0.0 – v2.2.2漏洞分析复现

    CVE-2020-7245 CTFd v2.0.0 – v2.2.2漏洞分析复现 一.漏洞介绍 ​ 在 CTFd v2.0.0 - v2.2.2 的注册过程中,如果知道用户名并在 CTFd 实例上启用 ...

  7. H5页面通用头部设置

    见到很多人写H5页面都不设置头部,不忍直视,于是整理一篇文章,不定期更新,为了让自己显得专业一点,也为了方便自己复制粘贴 一般来说必须设置项 <!-- 页面编码 --> <meta ...

  8. python-面向对象小结

    面向对象 小结 1:面向对象:就是一种编程思想 简称oop,指挥某某完成能完成的功能 2:面向对象与面向过程的优缺点 : 面向过程: 优点: 复杂问题简答化(一步一步解决), 流程化, 缺点:机械化 ...

  9. 逐浪CMS全面升级为.NET Core 3.0性能大提升

    微软发布了.Net Core 3.0正式版,逐浪CMS也在第一时间做了全面升级,并做了一系列的优化和调整,性能大幅提升,并解决了一些历史遗留问题,添加了一些新的功能.如后台固有小程序功能做了升级,功能 ...

  10. 简单易用的图像解码库介绍 —— stb_image

    原文链接:简单易用的图像解码库介绍 -- stb_image 说到图像解码库,最容易想起的就是 libpng 和 libjpeg 这两个老牌图像解码库了. libpng 和 libjpeg 分别各自对 ...