Appliquer les modificateurs d'accès dans les propriétés Apex du balisage de composant Lightning (mise à jour critique)

Cette mise à jour critique définit des composants Lightning cohérents avec l'utilisation des propriétés Apex dans d'autres contextes. Par exemple, une expression de balisage ne peut plus accéder à une propriété Apex avec une méthode getter Apex privée.

Où : cette modification s'applique aux composants Web Aura et Lightning dans Lightning Experience, Salesforce Classic, communautés Lightning et dans toutes les versions de l'application Salesforce.

Quand : Salesforce va automatiquement activer cette mise à jour critique à la date d'activation automatique répertoriée dans la page Mises à jour critique dans la Configuration.

Pourquoi : prenons par exemple une classe Apex avec une méthode getter privée pour une propriété de classe counter.

public class EnforcePrivateGetter {
    @AuraEnabled

    public Integer counter { private get; set; }

    @AuraEnabled
    public static EnforcePrivateGetter GetRepro2()
    {
        EnforcePrivateGetter result = new EnforcePrivateGetter();
        result.counter = 2; 
        return result;
    }
}

Lorsque la mise à jour critique est activée, ce composant Aura ne peut pas accéder à la méthode getter private avec l'expression {!v.apexObject.counter}. La même restriction s'applique à un composant Web Lightning.

<aura:component controller="EnforcePrivateGetter" access="global">
    <aura:handler name="init" value="{!this}" action="{!c.doInit}"/>

    <aura:attribute type="EnforcePrivateGetter" name="apexObject" />

    counter = {!v.apexObject.counter} <br></br>
</aura:component>

Voici le contrôleur JavaScript.

({
    doInit : function(cmp, ev) {
        var action = cmp.get("c.GetRepro2");
    
        action.setCallback(this, function(response) {
          var state = response.getState();
          if (state === "SUCCESS") {
            cmp.set('v.apexObject', response.getReturnValue());
          }
          else if (state === "ERROR") {
            console.log('Error : ' + JSON.stringify(errors));
          }
        });
        $A.enqueueAction(action);
    }
})

Lorsque la mise à jour critique est activée, la correction consiste à retirer le modificateur d'accès private de la méthode getter et de changer la définition de la variable de classe sur :

public Integer counter { get; set; }

Pour pouvoir être lue hors de la classe Apex, une propriété Apex ne peut pas avoir un modificateur d'accès private ou protected.

Comment : pour tester cette mise à jour critique, nous recommandons de travailler dans une organisation sandbox.

  1. Dans Configuration, saisissez Mises à jour critiques dans la case Recherche rapide.
  2. Sélectionnez Mises à jour critiques.
  3. Consulter les détails de la mise à jour critique « Appliquer les modificateurs d'accès dans les propriétés Apex du balisage de composant Lightning ».
  4. Cliquez sur Activer.
  5. Testez le comportement des composants qui utilisent des classes Apex avec des modificateurs d'accès private ou protected dans des méthodes getter.