I. Passer des objets entité au modèle
1. Classe d’entité PageInfo
Jusqu’ici nous transmettions uniquement des chaînes de caractères simples. Cette méthode est peu performante et complique la maintenance. Encapsuler les données dans des objets entité rend le code beaucoup plus lisible.
public class PageInfo
{
private bool IsShowImage;
public bool IsShowImage1
{
get { return IsShowImage; }
set { IsShowImage = value; }
}
}Langage du code : C# (cs)
- Champ privé
IsShowImage, exposé publiquement via la propriétéIsShowImage1 - Accès dans le modèle :
$info.IsShowImage1
2. Alimenter le contexte
//Conteneur de contexte du modèle
IContext context = new VelocityContext();
PageInfo pi = new PageInfo();
pi.IsShowImage1 = true;
//Enregistrer l’objet pi sous la clé info dans le contexte
context.Put("info",pi);
//Exemple de variable chaîne
context.Put("infotitle","Bonjour");Langage du code : C# (cs)
context.Put("nomCle",donnée):transmet les données au modèle, qui les récupère avec $nomCle.
II. Syntaxe principale du modèle Velocity
1. Marqueur de directive #
Tout ce qui commence par # est une directive. Principales directives :#if, #else, #end, #foreach, #set, #include
Exemple de rendu conditionnel :
Préparez deux images, placez‑les dans le dossier Contents/Images à la racine du site. Modifiez IsShowImage1 pour afficher l’une ou l’autre image.
#if($info.IsShowImage1)
<img src="./Contents/Images/a.gif" />
#else
<img src="./Contents/Images/b.gif" />
#endLangage du code : PHP (php)
Fonctionnement : affiche a.gif si IsShowImage1=true, sinon affiche b.gif
2. Marqueur de variable $
$nomVariable:affiche la valeur de la variable${nomVariable}:délimite la variable (point essentiel !)
Cas d’usage : du texte suit immédiatement la variable, le moteur ne sait pas où finit le nom de variable.
Mauvaise écriture : $infotitlefoxdevelop.com
Le moteur interprète tout cela comme une variable infotitlefoxdevelop qui n’existe pas.
Bonne écriture : ${infotitle}foxdevelop.com
Le moteur lit la variable infotitle puis concatène la chaîne foxdevelop.comLangage du code : PHP (php)
3. Modificateur de sortie silencieuse ! → $!nomVariable
Comportement par défaut : si la variable n’existe pas, la page affiche le texte brut $nomVariable$!nomVariable:affiche du vide quand la variable est absente ou nulle, sans afficher le signe dollar
Exemple comparatif :
| Syntaxe | Variable existe(valeur= »Bonjour ») | Variable absente |
|---|---|---|
$infotitle | Bonjour | $infotitle |
$!infotitle | Bonjour | (vide, rien ne s’affiche) |
${infotitle} | Bonjour | ${infotitle} |
$!{infotitle} | Bonjour | vide |
Extrait de test complet :
${infotitle}foxdevelop.com <br/>
$!infotitlefoxdevelop.com <br/>
$infotitle <br/>
$!infotitle <br/>Langage du code : HTML, XML (xml)
Conclusion
- Quand vous ajoutez du texte après une variable, encadrez‑la systématiquement par
${variable} - Privilégiez
$!{nomVariable}en production, pour éviter que des$xxxbruts cassent la mise en page sur des valeurs nulles - Pour tester une propriété booléenne avec
#if, écrivez directement#if($info.IsShowImage1), pas besoin d’ajouter==true
Syntaxe de base des modèles