DEV Community

Lucas Valhos
Lucas Valhos

Posted on

O que é um Wrapper no Salesforce?

Em Salesforce, um "Wrapper" é um padrão de design de programação usado para agrupar um conjunto de dados ou objetos diferentes em uma única unidade lógica. Este padrão é especialmente útil quando você deseja manipular e exibir um conjunto de informações em uma interface de usuário de maneira coesa. Vamos detalhar mais sobre o conceito de Wrapper e seus usos:

Definição

Um Wrapper é uma classe personalizada em Apex que contém outras variáveis e objetos, geralmente encapsulando várias propriedades e métodos relacionados. Ele permite que você trate um conjunto de informações relacionadas como uma única unidade, facilitando a manipulação de dados complexos em componentes visuais, como Visualforce pages ou Lightning components.

Usos Comuns de Wrappers

  1. Agrupamento de Dados:

    • Wrappers são frequentemente usados para agrupar dados de diferentes origens. Por exemplo, você pode ter uma classe Wrapper que agrupa informações de contas e contatos para serem exibidas juntas.
  2. Manipulação de Interfaces Complexas:

    • Em Visualforce pages ou Lightning components, Wrappers são úteis para gerenciar listas de registros com funcionalidades adicionais, como seleção múltipla, ações específicas por linha, ou agrupamento de informações.
  3. Passagem de Dados em Métodos:

    • Wrappers facilitam a passagem de dados complexos entre métodos, encapsulando múltiplos parâmetros em uma única estrutura de dados.

Exemplo de Uso de Wrapper

Aqui está um exemplo básico de como você pode definir e usar um Wrapper em Apex:

public class AccountContactWrapper {
    public Account account { get; set; }
    public List<Contact> contacts { get; set; }
    public Boolean isSelected { get; set; }

    public AccountContactWrapper(Account account, List<Contact> contacts) {
        this.account = account;
        this.contacts = contacts;
        this.isSelected = false;  // Padrão para não selecionado
    }
}
Enter fullscreen mode Exit fullscreen mode

Exemplo de Uso em Visualforce Page

Vamos supor que você queira exibir uma lista de contas com seus contatos em uma Visualforce page, permitindo que o usuário selecione várias contas:

public with sharing class AccountController {
    public List<AccountContactWrapper> accountWrapperList { get; set; }

    public AccountController() {
        accountWrapperList = new List<AccountContactWrapper>();
        List<Account> accounts = [SELECT Id, Name FROM Account LIMIT 10];
        for(Account acc : accounts) {
            List<Contact> contacts = [SELECT Id, Name FROM Contact WHERE AccountId = :acc.Id];
            accountWrapperList.add(new AccountContactWrapper(acc, contacts));
        }
    }

    public void processSelectedAccounts() {
        for(AccountContactWrapper wrapper : accountWrapperList) {
            if(wrapper.isSelected) {
                // Processar a conta selecionada
            }
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

E a correspondente Visualforce page pode ser:

<apex:page controller="AccountController">
    <apex:form>
        <apex:pageBlock title="Accounts and Contacts">
            <apex:pageBlockTable value="{!accountWrapperList}" var="wrapper">
                <apex:column>
                    <apex:inputCheckbox value="{!wrapper.isSelected}"/>
                </apex:column>
                <apex:column value="{!wrapper.account.Name}" headerValue="Account Name"/>
                <apex:column>
                    <apex:repeat value="{!wrapper.contacts}" var="contact">
                        {!contact.Name}<br/>
                    </apex:repeat>
                </apex:column>
            </apex:pageBlockTable>
            <apex:commandButton value="Process Selected" action="{!processSelectedAccounts}"/>
        </apex:pageBlock>
    </apex:form>
</apex:page>
Enter fullscreen mode Exit fullscreen mode

Benefícios de Usar Wrappers

  • Organização: Facilita a organização e manipulação de dados complexos em estruturas claras e lógicas.
  • Reutilização: Encapsula lógica comum em uma única classe, facilitando a reutilização e manutenção do código.
  • Flexibilidade: Permite manipular e exibir dados de diferentes maneiras sem alterar a estrutura subjacente dos objetos Salesforce.

Em resumo, Wrappers são uma ferramenta poderosa no arsenal de um desenvolvedor Salesforce, permitindo a criação de interfaces de usuário ricas e interativas, bem como a manipulação eficiente de dados complexos.

Top comments (0)