Utilisation de formules et de variables simples
Objectifs de formation
Une fois cette unité terminée, vous pourrez :
- Présenter une expression Visualforce et l’emplacement où elle est utilisée
- Citer au moins trois variables globales qui peuvent être utilisées dans des expressions Visualforce
- Ajouter une expression Visualforce à une page Visualforce
- Utiliser une fonction dans une expression Visualforce
Introduction aux variables globales et aux expressions Visualforce
Les pages Visualforce peuvent afficher des données récupérées à partir de la base de données ou de services Web, des données qui changent selon l’utilisateur qui se connecte et qui visualise la page, etc. Ces données dynamiques sont accédées dans un balisage en utilisant des variables globales, des calculs et des propriétés fournies par le contrôleur de la page. Elles sont généralement désignées sous le terme d’expressions Visualforce. Utilisez des expressions pour des sorties dynamiques ou transférer des valeurs à des composants en les affectant à des attributs.
Une expression Visualforce est n’importe quel ensemble de valeurs littérales, de variables, de sous-expressions ou d’opérateurs qui peuvent être résolus en une valeur unique. Les appels de méthodes ne sont pas autorisés dans des expressions.
Dans Visualforce, la syntaxe d’une expression est la suivante : {!expression }
Tout ce qui se trouve à l’intérieur des délimiteurs {!}
est évalué et remplacé dynamiquement lorsque la page est affichée ou lorsque la valeur est utilisée. L'espace est ignoré.
La valeur qui en résulte peut être un primitif (entier, chaîne, etc.) une valeur booléenne, un sObject, une méthode de contrôleur telle qu'une méthode d'action, et d'autres résultats utiles.
Variables globales
Utilisez des variables globales dans votre balisage Visualforce pour accéder à et afficher des valeurs et des ressources système.
Par exemple, Visualforce fournit des informations sur l’utilisateur connecté dans une variable globale appelée $User
. Vous pouvez accéder aux champs de la variable globale $User
(ou d'une autre variable) en utilisant une expression sous le format suivant : {!$GlobalName.fieldName }
.
- Ouvrez la Developer Console, puis cliquez sur File (Fichier) | New (Nouveau) | Visualforce Page (Page Visualforce) pour créer une page Visualforce. Saisissez le nom
UserStatus
pour la page.
- Dans l'éditeur, remplacez le balisage par :Ce balisage crée une case dans laquelle vous pouvez ajouter des informations utiles.
<apex:page> <apex:pageBlock title="User Status"> <apex:pageBlockSection columns="1"> </apex:pageBlockSection> </apex:pageBlock> </apex:page>
- Cliquez sur Preview (Aperçu) pour prévisualiser la page à mesure que vous la modifiez.
- Ajoutez le balisage ci-dessous entre les balises
<apex:pageBlockSection>
:{!$User.FirstName }.
Votre prénom doit être affiché dans le panneau User Status (Statut de l’utilisateur) que vous avez créé.
- Ajoutez au balisage deux autres expressions qui utilisent la variable globale
$User
pour le panneau User Status (Statut de l’utilisateur). La page doit se présenter comme suit :<apex:page> <apex:pageBlock title="User Status"> <apex:pageBlockSection columns="1"> {!$User.FirstName } {!$User.LastName } ({! $User.Username }) </apex:pageBlockSection> </apex:pageBlock> </apex:page>
{!...}
indique à Visualforce que tout élément placé entre accolades est dynamique et écrit dans le langage de l’expression. Sa valeur est calculée et remplacée à l'exécution, lorsqu'un utilisateur visualise la page.
Les expressions Visualforce ne sont pas sensibles à la casse et les espaces dans {!...}
sont ignorées. Par conséquent, les expressions suivantes génèrent toutes la même valeur :
{!$User.FirstName}
{!$USER.FIRSTNAME}
{!$user.firstname }
Expressions de formule
Visualforce permet d’utiliser davantage que des variables globales dans le langage d’expression. Visualforce prend également en charge des formules de manipulation de valeurs.
Par exemple, le caractère &
est l'opérateur de langage de formule qui concatène (associe) les chaînes.
- Dans votre page UserStatus, remplacez les expressions séparées de prénom et de nom par l'expression de formule ci-dessous. Cette expression combine le prénom et le nom de l'utilisateur connecté en les séparant par un espace. L'affichage doit rester inchangé.
{!$User.FirstName & ' ' & $User.LastName}
- Ajoutez l'élément ci-dessous au balisage de la page, sous les informations utilisateur.
<p> Next week it will be {! TODAY() + 7 } </p> <p> Today's Date is {! TODAY() } </p>
Voici des formules plus complexes qui utilisent la fonction TODAY()
. Les fonctions sont des calculs intégrés que vous pouvez identifier grâce aux parenthèses placées à la suite de leur nom. La première expression calcule simplement la date actuelle et la deuxième utilise l’opérateur d’addition pour ajouter sept jours à la date. La sortie dans votre page se présente comme suit :
Next week it will be Thu Sep 25 00:00:00 GMT 2014. Today's Date is Thu Sep 18 00:00:00 GMT 2014
- Ajoutez l'élément ci-dessous au balisage de la page, sous les expressions de date.
<p>Tomorrow will be day number {! DAY(TODAY() + 1) }</p> <p>Let's find a maximum: {! MAX(1,2,3,4,5,6,5,4,3,2,1) } </p> <p>The square root of 49 is {! SQRT(49) }</p> <p>Is it true? {! CONTAINS('salesforce.com', 'force.com') }</p> <p>The year today is {! YEAR(TODAY()) }</p>
Certaines fonctions, telles que TODAY()
, ont des parenthèses vides. Toutefois, d’autres peuvent contenir des paramètres qui correspondent aux valeurs que la fonction doit utiliser pour son calcul. Dans cet exemple, YEAR()
contient un paramètre de date, fourni par la fonction TODAY()
qui ne contient aucun paramètre. La fonction MAX()
peut contenir n'importe quel nombre de paramètres. La fonction CONTAINS()
est particulièrement intéressante. Elle renvoie une valeur booléenne, pouvant être soit « true », soit « false ». Elle compare deux arguments sous forme de texte et renvoie « true » si le premier argument contient le deuxième argument. Sinon, elle renvoie « false ». Dans le cas présent, la chaîne « force.com »
est incluse dans la chaîne « salesforce.com »
. Par conséquent, elle renvoie true
.
Expressions conditionnelles
Utilisez une expression conditionnelle pour afficher des informations différentes en fonction de la valeur de l’expression.
Par exemple, si une facture n'inclut aucun élément de ligne, vous pouvez afficher le terme « aucun » au lieu d'une liste vide. Si un élément a expiré, vous pouvez afficher le terme « Terminé » au lieu de la date et de l'heure de fin.
Avec Visualforce, vous pouvez également utiliser une expression de formule conditionnelle, telle que IF()
. L’expression IF()
accepte trois arguments :
- Le premier est une valeur booléenne, pouvant être soit « true », soit « false ». Par exemple, la fonction
CONTAINS()
que vous avez utilisée plus tôt.
- Le deuxième argument est la valeur renvoyée si le premier paramètre a pour valeur « true ».
- Le troisième argument est la valeur renvoyée si le premier paramètre a pour valeur « false ».
- Dans votre page
UserStatus
(Statut de l’utilisateur), sous les autres expressions, ajoutez le code ci-dessous.<p>{! IF( CONTAINS('salesforce.com','force.com'), 'Yep', 'Nope') }</p> <p>{! IF( DAY(TODAY()) < 15, 'Before the 15th', 'The 15th or after') }</p>
Avant d’enregistrer vos modifications et d’examiner les résultats, essayez d’anticiper leurs effets. Dans votre page, le résultat se présente comme suit :
La première expression utilise le même calcul de fonction CONTAINS()
que précédemment. Par contre, la fonction IF()
convertit le résultat booléen CONTAINS()
en un texte plus explicite pour l'utilisateur. De la même façon, la deuxième expression affiche un message durant la première quinzaine du mois et un message différent la deuxième quinzaine du mois.
- Supprimez toutes vos expressions de test, en conservant uniquement les lignes qui utilisent la variable globale
$User
. En d'autres termes, revenez à cette page.<apex:page> <apex:pageBlock title="User Status"> <apex:pageBlockSection columns="1"> {!$User.FirstName & ' ' & $User.LastName } ({! $User.Username }) </apex:pageBlockSection> </apex:pageBlock> </apex:page>
- Utilisons une expression conditionnelle pour une opération plus utile. Remplacez la ligne qui contient l’expression
$User.Username
par le code ci-dessous.
({! IF($User.isActive, $User.Username, 'inactive') })
isActive
est un autre champ disponible dans la variable globale $User
. Ce champ booléen est true si l'utilisateur est actif et false si l'utilisateur est inactif. Désormais, le panneau Statut de l'utilisateur affiche le nom de l'utilisateur lorsqu'il est actif, sinon il affiche « inactif ».
En savoir plus...
Vous pouvez utiliser de nombreuses variables et fonctions globales dans des expressions Visualforce.
Vous pouvez utiliser près de deux douzaines de variables globales dans Visualforce. Elles permettent de récupérer des informations sur l’utilisateur actuellement connecté, comme vous l’avez vu, mais également des informations sur l’organisation ($Organization
), les paramètres ($Setup
), les objets personnalisés ($ObjectType
), les actions disponibles avec ces objets ($Action
), etc. Reportez-vous à Variables globales dans le guide du développeur Visualforce pour plus de détails.
De la même façon, des douzaines de fonctions peuvent être utilisés dans Visualforce. La liste est similaire, avec quelques différences, à celle des fonctions disponibles dans des champs de formule. Lorsqu’elles se recoupent, les fonctions ont un comportement identique. Par conséquent, lorsque vous écrivez des expressions Visualforce, vous pouvez faire appel à vos connaissances des champs de formule. Pour consulter la liste complète, reportez-vous à Fonctions dans le guide du développeur Visualforce.
Les expressions peuvent être utilisées dans de nombreuses situations. Elles sont souvent utilisées pour fournir les valeurs d’attributs dans des composants Visualforce.
Ressources
-
Aide Salesforce : Variables globales
-
Aide Salesforce : Éléments d’une formule
-
Visualforce Developer Guide: Variables globales
-
Visualforce Developer Guide: Fonctions
-
Visualforce Developer Guide: Opérateurs d’expression
-
Trailhead : Formules et validations