Visualforce is one of the powerful framework in Salesforce that allows us to build sophisticated, custom user interfaces that can be hosted natively on the Salesforce platform. Central to leveraging Visualforce’s full potential is understanding and effectively utilizing Visualforce Page Controllers in Apex. This blog aims to provide a deep dive into the world of Visualforce page controllers, from basic concepts to advanced usage.

What is a Visualforce Page Controller?

A Visualforce Page Controller is an Apex class that provides the data and actions that can be referenced by a Visualforce page. Controllers are fundamental in Salesforce development as they act as the bridge between the database (model) and the user interface (view). They manage the logic of your page, handling everything from basic CRUD operations to complex business processes.

Types of Controllers

There are three main types of controllers in Visualforce:

  1. Standard Controllers: These controllers are provided by Salesforce and allow you to interact with standard Salesforce objects like Accounts, Contacts, and Opportunities. They come with built-in functionalities such as save, delete, and list view actions.


  1. Custom Controllers: Written in Apex, these controllers provide complete control over the data and actions within a Visualforce page. Custom controllers are necessary when the standard controller’s functionality is insufficient for your needs.


  1. Controller Extensions: These are Apex classes that extend the functionality of a standard or custom controller. They allow you to add custom logic and are useful for enhancing the capabilities of standard controllers without having to rewrite them.


  • Difference Between Standard Controller and Custom Controller in Salesforce

Salesforce Visualforce pages rely on controllers to manage data and implement logic for user interactions. Understanding the differences between standard controllers and custom controllers is crucial for developing efficient and effective Visualforce pages. Here’s a comprehensive comparison of these two types of controllers:

Standard Controller

Definition: A standard controller is an out-of-the-box controller provided by Salesforce that automatically provides basic CRUD (Create, Read, Update, Delete) operations for standard and custom objects.

Key Characteristics:

  1. Pre-Built Functionality:
    • Standard controllers come with built-in functionality that handles common tasks such as saving, deleting, and querying records without the need for additional code.
    • They automatically manage the page state and perform operations based on the user’s permissions and sharing rules.
  2. Ease of Use:
    • Ideal for simple applications that require basic operations on Salesforce objects.
    • No need to write complex Apex code for standard operations, which can accelerate development and reduce potential errors.
  3. Syntax:
    • Visualforce pages reference standard controllers using the standardController attribute in the <apex:page> tag.

<apex:page standardController=”Account”>


  <apex:inputField value=”{!Account.Name}”/>

   <apex:commandButton action=”{!save}” value=”Save”/>




    • The example above leverages the Account standard controller to handle form submission and saving.
  1. Limitations:
    • Limited to basic operations; not suitable for complex business logic or workflows that require customization beyond what standard controllers offer.
    • Cannot be used for functionalities that require complex, multi-object transactions or extensive custom logic.

 Custom Controller

Definition: A custom controller is an Apex class written by developers to extend or replace the functionality provided by standard controllers, allowing for complete control over the logic and behavior of a Visualforce page.

Key Characteristics:

  1. Custom Functionality:
    • Provides the ability to implement custom business logic, complex calculations, and multi-step processes that standard controllers cannot handle.
    • Developers can create custom methods, manage complex queries, and handle detailed user interactions.
  2. Flexibility:
    • Custom controllers offer the flexibility to work with multiple objects, custom objects, and integrate with external systems or APIs.
    • Can implement custom security and sharing rules, beyond the standard behavior.
  3. Syntax:
    • Visualforce pages reference custom controllers using the controller attribute in the <apex:page> tag.
    • Building a Simple Custom Controller

Let’s start with a basic example to illustrate how to create a custom controller. Suppose we want to display a list of accounts on a Visualforce page:

Create the Apex Controller:


public class AccountController


    public List<Account> accounts { get; set; }


    public AccountController() {

        accounts = [Select Id, Name From Account];





Create the Visualforce Page:


<apex:page controller=”AccountController”>


         <h1>Account List</h1>




                    <apex:pageBlockTable value=”{!accounts}” var=”account”>


                               <apex:column value=”{!account.Name}” headerValue=”Account Name”/>








In this example, the `AccountController` class queries all accounts and stores them in a list. The Visualforce page then references this list to display account names in a table.

  1. Complexity:
    • Requires writing and maintaining custom Apex code, which demands a good understanding of Salesforce development, Apex language, and Visualforce.
    • Increased development time and potential for bugs, but provides much greater control and customization.


  • Choosing Between Standard and Custom Controllers

When to Use Standard Controllers:

  • You need to quickly build a page for basic CRUD operations.
  • The standard functionalities meet your requirements without the need for additional custom logic.
  • You want to leverage Salesforce’s built-in security and sharing rules automatically.

When to Use Custom Controllers:

  • Your application requires complex business logic, custom workflows, or integrations.
  • You need to handle multiple objects and perform operations that go beyond the capabilities of standard controllers.
  • You want full control over the data and operations within your Visualforce page.

Best Practices for Controllers

  1. Bulkify your code: Always consider bulk processing to ensure your controller can handle large datasets efficiently without hitting governor limits.
  2. Use try-catch blocks: Handle exceptions gracefully to ensure a better user experience.
  3. Avoid SOQL in loops: Keep SOQL queries outside loops to optimize performance and avoid hitting limits.
  4. Security considerations: Use with sharing keywords to enforce sharing rules and ensure data security.


Mastering Visualforce page controllers in Apex opens up a world of possibilities for creating custom and dynamic user interfaces on the Salesforce platform. By understanding the different types of controllers, how to implement them, and best practices, you can build efficient, user-friendly applications tailored to your organization’s needs. Whether you’re just starting with Salesforce development or looking to enhance your skills, diving deep into Visualforce controllers is an essential step in your journey.

    For more information& classes Call: 20-48553009
                                                           Registration Link: Click Here!

Author:  Rohit Kumawat

Salesforce Trainer

IT Education Centre Placement & Training Institute

© Copyright 2024 | IT Education Centre.