1. Objekte an Vorlagen übergeben
1.1 PageInfo‑Entitätsklasse
Bisher haben wir nur einfache Zeichenketten übergeben. Das ist ineffizient und erschwert die Wartung. Wenn man Daten in Entitätsobjekte verpackt, wird der Code deutlich übersichtlicher.
public class PageInfo
{
private bool IsShowImage;
public bool IsShowImage1
{
get { return IsShowImage; }
set { IsShowImage = value; }
}
}Code-Sprache: C# (cs)
- Privates Feld
IsShowImage, nach außen über die EigenschaftIsShowImage1verfügbar - Zugriff in der Vorlage:
$info.IsShowImage1
1.2 Kontextdaten füllen
//Vorlagen‑Kontext‑Container
IContext context = new VelocityContext();
PageInfo pi = new PageInfo();
pi.IsShowImage1 = true;
//Objekt pi unter dem Schlüssel info im Kontext ablegen
context.Put("info",pi);
//Beispiel für String‑Variable
context.Put("infotitle","Hallo");Code-Sprache: C# (cs)
context.Put("Schlüsselname",Daten):Gibt Daten an die Vorlage weiter, die Vorlage liest sie über $Schlüsselname aus.
2. Wichtige Velocity‑Vorlagensyntax
2.1 Direktiv‑Zeichen #
Anweisungen, die mit # beginnen, sind Direktiven. Häufig verwendet:#if, #else, #end, #foreach, #set, #include
Beispiel für bedingte Darstellung:
Bereiten Sie zwei Bilddateien vor und legen Sie diese unter Contents/Images im Website‑Stammordner ab. Über IsShowImage1 steuern Sie, welches Bild angezeigt wird.
#if($info.IsShowImage1)
<img src="./Contents/Images/a.gif" />
#else
<img src="./Contents/Images/b.gif" />
#endCode-Sprache: PHP (php)
Logik: Zeigt a.gif bei IsShowImage1=true, sonst b.gif an
2.2 Variablen‑Zeichen $
$Variablenname:Gibt den Variablenwert aus${Variablenname}:Variablenbegrenzung (wichtig!)
Anwendungsfall: Text folgt direkt auf eine Variable, die Engine kann die Variable‑Grenze nicht erkennen.
Falsche Schreibweise: $infotitlefoxdevelop.com
Die Engine interpretiert alles als Variable infotitlefoxdevelop, welche nicht existiert.
Richtige Schreibweise: ${infotitle}foxdevelop.com
Die Engine wertet infotitle als Variable aus und hängt die Zeichenkette foxdevelop.com anCode-Sprache: PHP (php)
2.3 Still‑Ausgabe‑Modifikator ! → $!Variablenname
Standardverhalten: Fehlt die Variable, wird der Text $Variablenname unverändert ausgegeben$!Variablenname:Gibt Leertext aus, wenn Variable fehlt oder null ist; das‑$‑Zeichen wird nicht ausgegeben
Vergleichsbeispiel:
| Syntax | Variable vorhanden(Wert=“Hallo“) | Variable fehlt |
|---|---|---|
$infotitle | Hallo | $infotitle |
$!infotitle | Hallo | (leer, keine Ausgabe) |
${infotitle} | Hallo | ${infotitle} |
$!{infotitle} | Hallo | leer |
Vollständiger Testcode:
${infotitle}foxdevelop.com <br/>
$!infotitlefoxdevelop.com <br/>
$infotitle <br/>
$!infotitle <br/>Code-Sprache: HTML, XML (xml)
Zusammenfassung
- Wenn Text hinter eine Variable angehängt wird, immer mit
${Variable}umschließen - In Produktivumgebungen bevorzugt
$!{Variablenname}verwenden, damit bei Null‑Werten kein rohes$xxxdas Layout zerstört - Bei
#if‑Prüfung auf boolesche Eigenschaften direkt#if($info.IsShowImage1)schreiben,==trueist überflüssig
Grundlegende Vorlagensyntax