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. 模拟HTTP请求超时时间设置

    HTTP请求有两个超时时间:一个是连接超时时间,另一个是数据传输的最大允许时间(请求资源超时时间). 使用curl命令行 连接超时时间用 --connect-timeout 参数来指定 数据传输的最大 ...

  2. 再谈拍照,OPPO这次拿什么和iPhone7拼?

    ​一年一度的iPhone新机如期而至,双摄像头成为iPhone 7 Plus标配,尽管在这之前,双摄像头已有少数厂商在手机上装备,但苹果一出,市场必定全面跟进.无论各大厂商是否采用双摄像头,在手机拍照 ...

  3. 一个很实用的css技巧简析

    我是小雨小雨,专注于更新有趣.实用内容的小伙,如果内容对大家有一点帮助,那么就请动动手指,给个关注.点赞支持一下吧. ^ - ^ 序言 前两天接到一个需求,其中包括一个有序的列表,我们今天就来看看这个 ...

  4. Hadoop环境搭建问题总结

    最近抽空搭建了Hadoop完全分布式环境,期间遇到了很多问题,大部分问题还是可以在网上搜到的,这里说下自己遇到的两个没有找到结果的问题吧. 1.启动时报:没有那个文件或目录 原因:三台机器的用户名不一 ...

  5. Mysql或者SQL Server数据库的运行机制和体系架构

    一.MySQL主要分为以下几个组件: 连接池组件 管理服务和工具组件 SQL接口组件 分析器组件 优化器组件 缓冲组件 插件式存储引擎 物理文件 二.MySql的组成:Mysql是由SQL接口,解析器 ...

  6. IAR软件使用的快捷键配置以及配置cc2530环境

    以下是我对IAR软件使用的快捷键配置cc2530以及配置环境的总结,如下图所示 ​ ​ ​ 弹出保存窗口 ​ 工程生成完毕——生成.c文件 ​ 快捷键ctrl+s保存.c文件 ​ ​ ​ ​ ​ 选择 ...

  7. 简单说 JavaScript中的tostring( ) 与 valueOf( )方法

    说明 所有的对象都继承有toString() 和 valueOf() 方法,对象到字符串,对象到数字的转换,会通过调用待转换对象的这两个方法中的一个来完成. 解释 toString( )方法的作用是: ...

  8. 讨论一下.NET里,对cookie身份验证的超时的处理

    引言 在.NET里提供了FormsAuthentication类用来对用户身份进行验证和授权.不过,对于cookie的超时处理,一直是一个头疼的问题.这里介绍一下微软对.NET 身份验证超时的处理机制 ...

  9. java套打快递单

    package org.sq.common.utils; import org.apache.commons.codec.binary.Base64;import org.apache.http.en ...

  10. 7种你应该知道的JavaScript常见的错误

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://blog.bitsrc.io/types-of-native-errors-in- ...