Salesforce Controllers

Salesforce has created a comprehensive platform for building applications. Visualforce is a framework that is used to build sophisticated, custom user interfaces, and host them in the Lightning platform. When developers create a Visualforce page, it contains two elements - Visualforce markup and Visualforce controller. The Visualforce markup contains tags, HTML, etc., that can be embedded in a tag to include on the page. The controllers play a very important role in building applications with Visualforce. In this post, we will give you a brief overview of Salesforce controllers. We will explain the types of controllers that are available and how they can be associated with a Visualforce page for effective user behavior. Without further delay, let us dive deep into the details.

What are the controllers and their types?

Salesforce controllers, also known as Visualforce controllers, are used to execute a set of instructions. Controllers specify what happens when a user interacts with the Visualforce Markup components such as Visualforce tags, HTML, fields, etc. When a user clicks on a button or link on a Visualforce page, the associated controllers will display the data related to the user action or component. The controllers have the ability to modify component behavior. They work on an MVC(Model-View-Controller) approach. Salesforce provides the below types of controllers.

  • Standard controllers
  • Standard List Controllers 
  • Custom Controllers

Wish to make a career in the world of salesforce? Start with HKR'S  salesforce online training !

1.Standard controllers

The standard controllers are the default controllers provided by Salesforce. They contain the same logic and functionality that are used for standard Salesforce pages. Every Salesforce object contains a standard controller that can be queried using the Salesforce Lightning Platform API. When a user interacts with a component on the page, the controller interacts with the database, fetches the relevant data, and displays it on the page. To display the relevant data on the Visualforce page, we need a record ID. So, we need to send an ID as a query string parameter in the page URL. The standard controller has a getter method that returns the record related to the query ID. If a user doesn't have access to a certain object (or component) on the page, which is associated with a standard controller, it will display an insufficient privileges error message to the user. 

Associating a standard controller with a Visualforce page

To associate a standard controller to a Visualforce page, we have to use the “standardController” attribute on the tag. We should specify the name of any Salesforce object, which can be queried using the Lightning Platform API. Here is the syntax to associate a standard controller to a standard object on a page,

Salesforce Training

  • Master Your Craft
  • Lifetime LMS & Faculty Access
  • 24/7 online expert support
  • Real-world & Project Based Learning
2.Standard List Controllers

Standard list controllers are used for displaying or act on a set of records on the Visualforce pages. Related lists, list pages, and mass action pages are some of the examples of Salesforce pages that work with a set of records. The following are the objects that can be used with standard list controllers.

  • Account
  • Contract
  • Idea
  • Order
  • Product2
  • Solution
  • User
  • Lead
  • Opportunity
  • Asset
  • Campaign
  • Case
  • Contact
  • Custom objects

Get ahead in your career with our salesforce Tutorial  

Associating a standard list controller with a Visualforce page

Associating a standard list controller is very much similar to associating a standard controller. In the standard list controller, we can set an object through the "standardController" attribute on the tag and then set the recordSetVar attribute on the same component. Here is the syntax to associate a standard list controller with an object on a page,

Once the standard list controller is associated, we can act on a set of records using expression language syntax. We can use a standard list controller to add pagination to a page with the help of the next and previous actions.

Subscribe to our youtube channel to get new updates..!

3.Custom Controllers

Custom controllers are used to implementing custom logic and data manipulation for a Visualforce page. If we want to perform things like calling an external web service, validate and insert data, we can use a custom controller. The custom controllers override the existing functionality and implement customized navigation through an application. They execute entirely in system mode and users will have full control over the app’s logic. 

Create a Visualforce page that uses a custom controller

To add a custom controller to a Visualforce page, we have to set the "controller" attribute in the tag. When we use a custom controller, we cannot use a standard controller. Here is the syntax to associate a custom controller to a Visualforce page,

Controller Extensions

A controller extension overrides behavior in a standard or custom controller. Any Apex class with a constructor that takes a single argument of type "ApexPages" is referred to as a controller extension. We can implement the functionality of another controller to an apex tag while adding custom logic. Here is an example class for controller extension.

public class myControllerExtension {

//custom code


We can extend this controller extension on a Visualforce page like below.
Both the controller extension and custom controller use the action, getter, and setter methods. The custom controllers and controller extension classes ignore user permissions and field-level security as they execute in system mode. So, the custom controllers and controller extensions are mainly used to set organization-wide defaults. Based on the user profile, we can even define whether a user can execute methods in a custom controller or controller extension class. 

Salesforce Training

Weekday / Weekend Batches


Apex is a complete programming language that we can use to implement effective Visualforce pages. We can use Apex properties, which are a combination of a variable with getter and setter methods. We can implement anything on a Visualforce page with the help of controllers in Apex code. Using controllers, we can implement features like dropdown on a Visual page. They allow you to filter the records displayed on the page. While working with controllers, you should have an eye out for validation rules. You should be able to handle the validation rule exceptions. 

Related Articles:

Find our upcoming Salesforce Training Online Classes

  • Batch starts on 8th Jun 2023, Weekday batch

  • Batch starts on 12th Jun 2023, Weekday batch

  • Batch starts on 16th Jun 2023, Fast Track batch

Global Promotional Image


Request for more information

Ishan Gaba
Ishan Gaba
Research Analyst
Ishan is an IT graduate who has always been passionate about writing and storytelling. He is a tech-savvy and literary fanatic since his college days. Proficient in Data Science, Cloud Computing, and DevOps he is looking forward to spreading his words to the maximum audience to make them feel the adrenaline he feels when he pens down about the technological advancements. Apart from being tech-savvy and writing technical blogs, he is an entertainment writer, a blogger, and a traveler.