Wrapper Classes in Salesforce
A wrapper class in apex is a custom apex class which consists of data structures and variables or a collection of these said variables as properties inside of it.
Wrapper classes are generally used by developers, and they define all the properties inside of a wrapper class. Just like standard and custom objects have fields which behave as properties, wrapper classes also have variables which behave as properties.
A wrapper class can consist of a combination of primitive and non-primitive data types, like :
public class Wrapper
{
public String text;
public list accs;
}
Example
A really common scenario for using wrapper classes is creating a class as per your requirement in order to display it on a visualforce page. Let’s say we want to show a list of Accounts with a checkbox next to each of the records to allow selection.
So we will need a wrapper class with an Sobject property for the Account object and a Boolean property for the checkbox.
public class AccountWrapper
{
public Account acc {get;set;}
public Boolean selected {get;set;}
}
This wrapper class can be used in our apex controller to fill data and display it on a visualforce page :
public class VFController
{
public list accs{get;set;}
public VFController()
{
accs = new list();
for(Account ac : [SELECT Id,Name FROM Account])
{
AccountWrapper acW = new AccountWrapper();
acW.acc = ac;
acW.selected = false;
accs.add(acW);
}
}
}
And here is the visualforce page to display this :
| Select | Account Id | Account Name |
|---|---|---|
| {!wrap.acc.Id} | {!wrap.acc.Name} |
Output :

