Velocity condensed

Velocity ist keine Fahrradstadt, sondern ein Java-basiertes Templatesystem, dass eine Trennung zwischen Java-Code und Oberflächenbeschreibung erlaubt. Die Velocity Template Language (VTL) erlaubt den Aufruf von an anderer Stelle in Java implementierten Objekten und Methoden. Velocity geht über den reinen Einsatz auf Webpages hinaus. Auch SQL (u.v.m.) läßt sich damit zusammenbauen.

Nach vergleichsweise langer Suche habe ich eine gute How-to-Seite gefunden, aus der ich im Folgenden das Wesentliche wiedergebe.

Sprachsyntax:

– jede Anweisung beginnt mit #, Referenzen mit $

-Variablen werden mit $ gekennzeichnet, sie können im HTML-Code oder im Java-Code definiert und initialisiert werden: #set ( $a = “bla”), Variablen beginnen mit Buchstaben, so dass die Angabe $2.40 nicht als Variable interpretiert wird.

– Escaping mit \

-Strings: ” “, wenn sowohl statischer Text, als auch zu interpretierende Variablen, ‘ ‘ wenn as-is.

– Comment: ## (single line), #* *# (multiline), #** *# (documentation)

-drei Typen von Referenzen: variables ($var), properties($object.Property ruft, wenn vorhanden die Methode getProperty() auf – nicht verwechseln mit Instanzvariable! Auf diese kann nicht ohne Getter zugegriffen werden), methods ($object.eatThis( “banana”) ), wobei die Übergabe zwischen Java und Velocity immer über Strings läuft

– werden Properties verwendet, gibt bestimmte Lookup-Rules um auf die richtige Methode zu kommen

– ist eine Referenz zum Zeitpunkt der Ausführung nicht definiert, wird die Referenz als Klartext ausgegeben. Um stattdessen blank auszugeben, ist ein ! zu notieren: $!justDontPrintMeIfNull

– die zu den Referenzen angegebene Schreibweise ist die shorthand-Schreibweise. Wenn nötig, kann der Ausdruck mit geschweiften Klammern versehen werden: $!{object.doFormal()}

– Escapen mit \

-Anweisungen: beginnen immer mit #, lassen sich auch über {} schreiben: #{if}

-#set: zum Wertzuweisen: #set ( $var = XXX) mit XXX als Property, Methodenrückgabe, Variable, Array ( [ “b”, “c”]), Map ({“a” : “appel”, “b” : “banane”}), arithmetischer Ausdruck

– Standardmäßig kann KEIN null zugewiesen werden! Die Referenz bleibt erhalten!

-Konditionen: #if #ifelse #else #end(!)

-Evaluierung im #if: $var ist true, wenn boolean und true ODER $var ist nicht boolean und nicht null

– == kann zum Vergleich von Strings, Numbers oder Objects verwendet werden

– logische Operatoren &&, || und ! äquivalent zu Java

-#foreach( $thingie in $things) #end

– interne Variable für die Nummer des Schleifendurchlaufs: $velocityCount startet bei 1

– #include (“bla.txt”) : ungerendertes Einbauen, #parse (“vtlText.txt”) : rendern und einbauen; Dateien müssen unter TEMPLATE_ROOT liegen

-#stop. Stoppt die Velocity-Interpretation, zu Debugging-Zwecken sinnvoll.

Soviel zu Velocity condensed. Es gibt auch die Möglichkeit Macros zu schreiben (Velocimacros). Darauf möchte ich an dieser Stelle nicht weiter eingehen. In oben verlinktem How-to wird darauf näher eingegangen.