Gestion des conditions dans les templates
Dans les modèles (templates) de convention, d’avenant et de mail, il est possible d’afficher du contenu en fonction de conditions. L’éditeur utilise une syntaxe simplifiée ($IF, $ELSE, $ENDIF…) qui est convertie en expressions FreeMarker avant la génération du document.
Cette syntaxe s’applique aux templates éditables depuis l’interface :
-
Paramétrage global > Templates de convention (convention et avenant)
-
Paramétrage global > Template de mails
|
Les fichiers HTML fournis par défaut dans l’application utilisent directement la syntaxe FreeMarker ( |
Principe de fonctionnement
Avant le traitement FreeMarker, l’application convertit les marqueurs simplifiés :
| Marqueur saisi | Équivalent FreeMarker |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
Utilisez uniquement des guillemets droits ( |
Structure d’une condition simple
$IF (convention.creditECTS != '') $FI Contenu affiché si la condition est vraie. $ELSE Contenu affiché si la condition est fausse. $ENDIF
Ce bloc est converti en :
<#if (convention.creditECTS != '')> Contenu affiché si la condition est vraie. <#else> Contenu affiché si la condition est fausse. </#if>
|
Le marqueur
|
Test d’existence d’une variable
Pour vérifier qu’une variable est renseignée, utilisez le suffixe ??$ à la place de $FI :
$IF etudiant.nom??$Bonjour ${etudiant.nom} !$ELSE Utilisateur inconnu $ENDIF
Ce bloc est converti en :
<#if etudiant.nom??>Bonjour ${etudiant.nom} !<#else> Utilisateur inconnu </#if>
Comparaison d’égalité avec $EQUALS
Pour comparer une variable à une valeur textuelle, utilisez le marqueur $EQUALS :
$IF convention.interruptionStage $EQUALS Oui $FI Le stage comporte une interruption. $ENDIF
Opérateurs disponibles
Les expressions entre $IF et $FI (ou avant ??$) suivent la syntaxe FreeMarker.
| Opérateur | Signification | Exemple |
|---|---|---|
|
Égal à |
|
|
Différent de |
|
|
Supérieur, inférieur |
|
|
Supérieur ou égal, inférieur ou égal |
|
|
ET logique |
|
|
|
|
|
`$IF (convention.interruptionStage == 'Oui' |
|
Les mots-clés |
Variables utilisables
Les conditions s’appuient sur les mêmes variables que l’insertion de paramètres ${…}. Les principaux objets disponibles sont :
| Objet | Exemples de propriétés |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
La liste complète des paramètres disponibles est affichée dans l’écran d’édition des templates de convention (Liste des paramètres).
Exemples courants
Afficher un bloc uniquement si une gratification est prévue
$IF (convention.montantGratification != '') $FI
Gratification : ${convention.montantGratification} ${convention.deviseGratification}
$ENDIF
Bonnes pratiques
-
Testez le rendu via la prévisualisation PDF (templates de convention) ou l’envoi de mail de test (templates de mails).
-
Vérifiez le comportement lorsque la variable testée est vide : une chaîne vide
''n’est pas toujours équivalente à une variable absente (??$). -
Placez chaque marqueur (
$IF,$FI,$ELSE,$ENDIF) de façon explicite ; un$ENDIFmanquant provoque une erreur à la génération. -
Pour les comparaisons numériques, utilisez le qualificateur FreeMarker
?numbersi la variable est stockée sous forme de texte.
Limites connues
-
$ELSEIFn’est pas supporté. -
La syntaxe
$LIST/$ENDLISTmentionnée dans certains exemples historiques de paramètres n’est pas convertie par l’application : pour parcourir une liste, préférez les boucles FreeMarker natives (<#list>) dans les templates techniques, ou structurez le contenu autrement dans les modèles éditables.