Typisch für Webcontent ist, dass ein vorgegebener Rahmen das Layout vorgibt, aber die Inhalte variieren. Diesem Ansatz folgt Velocity aus dem Jakarta-Projekt, das Java-Lösungen für den Apache-Webserver sammelt. So behandeln die Beispiele des Velocity User Guide sowie die meisten anderen Anleitungen Web-bezogene Aufgaben.
Um diesen festgetretenen Pfad geht es im Folgenden aber nicht, sondern um ein anderes Anwendungsszenario. Das Prinzip bleibt aber unverändert und lässt sich auf Web- und beliebige andere Anwendungen übertragen. Das Beispiel erzeugt eine Java-Bean-Klasse dynamisch aus einer vorgegebenen Beschreibungsdatei. Mit Hilfe des Velocity-Template »bean.vm« stellt »BeanGen.java« (Listing 3) eine Bean-Klasse mit einigen Properties bereit.
Wer Java-Beans kodiert, muss immer wieder ähnliche Codeabschnitte tippen. Wenigstens für die Getter- und Setter-Methoden liefern die gängigen IDEs inzwischen Vorlagen mit, aber bei weiter gehenden Bean-Features wie Changelistener für Bound und Constrained Properties, Events und Eventlistener helfen sie nicht weiter. Selbst einfache Klassen mit wenigen Properties arten unnötig aus. Velocity beschleunigt solche mühsamen Routinearbeiten deutlich.
Templates und Daten
Die Template-Engine von Velocity erzeugt aus Daten und Vorlagen - den Templates - fertige Ausgabedateien für praktisch jeden Zweck. Diese Vorlagen bestehen aus drei Teilen: statischem Text, Referenzen und Direktiven. Die Referenzen sind Platzhalter für Daten, die Direktiven steuern das Verhalten der Template-Engine. Velocity verwendet für seine Templates eine eigene Programmiersprache: die Velocity Template Language (VTL).
Die Einstiegshürde beim Lernen der Sprache liegt niedrig. VTL beschränkt sich auf die unbedingt notwendigen Elemente. Wer JSPs und Shell- oder Perl-Programmierung kennt, dem wird VTL kaum Mühe bereiten. Die Daten für die Templates definiert man entweder innerhalb des jeweiligen Template selbst, oder stellt sie über ein Rahmenprogramm zur Verfügung. Letzteres ist der übliche Weg, erstere Methode eignet sich hauptsächlich für Konstanten.
Bean-Template
Listing 1, ein Auszug aus dem Beispiel-Template, definiert seine Daten fest. Es mischt statischen Text, in diesem Fall Java-Code, mit Direktiven und Referenzen. Die Zeilen 14 und 15 ziehen weitere Templates heran, dabei bewirkt »#parse« das Verarbeiten des importierten Template. Die Anweisung »#include« fügt einen Inhalt hinzu, ohne darin enthaltene Anweisungen zu verarbeiten.
Listing 1 verwendet fast alle Sprachelemente von VTL: Loops, einfache Bedingungen, Makro-Aufrufe, Kommentare und Schachtelung von Templates. Die Platzhalter für die Daten, also die Referenzen, fangen mit »$« an - die Bash lässt grüßen. Referenzen bieten aber mehr Möglichkeiten als Variablen.
« Zurück
1
2
3
4
5
Weiter »