Post on 06-Apr-2015
Präsentation Velocity
Velocity
Allgemein Templets Zusammenhang Templets Java Kontext $ UI $link
Allgemein
Template Engine zwei wesentliche Merkmale
– strikte Trennung – Script-Sprachen-Elemente.
Einsatzgebiet – Servlet basierte Webprogrammierung – Java und SQL Code Erzeugung eingesetzt, oder
in der XMLVerarbeitung/Transformation
Wie funktioniert Velocity?
Ein Context Objekt wird erzeugt. - Die Daten werden dem Context Objekt
hinzugefügt. - Ein Template wird ausgewählt - Der Output entsteht, nachdem das
Template mit den Daten zusammengeführt (merge) wurde.
Beispiel für die Trennung
kleines Template mit dem Namen helloworld.vm:
Hello $name! Welcome to Velocity!
Beispielimport java.io.StringWriter;import org.apache.velocity.app.VelocityEngine;import org.apache.velocity.Template;import org.apache.velocity.VelocityContext; public class HelloWorld {public static void main( String[] args ) throws Exception {VelocityEngine ve = new VelocityEngine();ve.init();Template t = ve.getTemplate( "helloworld.vm" );VelocityContext context = new VelocityContext();context.put("name", "World");StringWriter writer = new StringWriter();t.merge( context, writer );System.out.println( writer.toString() );}}
Beispiel
Hello World! Welcome to Velocity!
Context
basiert auf einem Container der zwischen verschiedenen Layern(Schichten) Daten transferieren kann
Verbindung zwischen Designer und Programmierer
Benützung wie eine Hash-Tabelle
Context
Anwendung (Reihenfolge spielt eine Rolle) public Object put(String key, Object value); public Object get(String key); Beispiel
(key) studName den Wert (value) ia99boes
context.put("studName", "ia99boes");
Properties
$hello.Hello– Returniere den Wert des assoziierten Schlüssels
Hello in der Hashtabelle hello.– Hello kann einen Methodenaufruf darstellen. Es
gilt als Abkürzung für hello.getHello()
Parse Parse dient um weitere Templates (*.vm) einzubinden. Beispiel :Count down
#set( $count = 8 )
#parse( "parseRekursion.vm" )
rekursion.vm verweist auf das parseRekursion.vm, -- > $count
#set ( $count = $count – 1 )
#if ( $count > 0 )
#parse( "parseRekursion.vm" )
#else
All done with parseRekursion.vm!
#end
Parse
Ergebnis-- > 8-- > 7-- > 6-- > 5-- > 4-- > 3-- > 2-- > 1All done with parseRekursion.vm!
Stop
Mit dem #stop Element kann der Designer die Ausführung des Scripts stoppen (Fehlersuche)
$ UI
Ermöglicht ein einheitliches Design– Schrift (Farbe, Typ, Größe)– Hintergrund– Bilder
– Wird in einer eigenen Datei gespeichert• UI Ordner• .props
Im Newapp Beispiel
# These are the default properties
bgcolor = #E0C2C2sansSerifFonts = verdana,geneva,helveticaformLabelColor = #b3cc99formFieldColor = #b3dd99labelColor = #b3cc99dataColor = #4BDF1Avlink = #00ff00alink = #ff00ff
tableCellSpacing = 0tableCellPadding = 0
menuColor = #4BDF1A
buttonAlignment = rightbuttonColor = #DDDDDD
tableColor = #AAAAAA
# ImagesalertImage = alert1.giflogo = tdm.jpgpoweredByImage = powered_by_tambora.gifline = line.gifdarkColor = #000088lightColor = #DDDDDD
Variablen
Die Variabeln starten immer mit einem $-Zeichen, gefolgt von einem so genannten VTLIdentifier.
Dieser setzt sich aus einem alphanumerischen Zeichen (a..z oder A..Z)
zusammen. Der Rest ist auf die nachfolgenden Zeichen limitiert: a..z, A..Z, 0..9, -,
Beispiel Variable setzen:
#set( $variable = "bar" )Variable reference: #set( $monkey = "bill" ) String literal: #set( $monkey.Friend = "monica" ) Property reference: #set( $monkey.Blame =
$whitehouse.Leak ) Method reference: #set( $monkey.Plan =
$spindoctor.weave($web) ) Number literal: #set( $monkey.Number = 123 ) Range operator: #set( $monkey.Numbers = [1..3] ) Object array: #set( $monkey.Say = ["Not", $my,
"fault"] )
if - Statement
Die if Bedingung ist erfüllt, sobald die übergebene Variable definiert ist, oder $unilinz ein Boolean Objekt, dessen Wert true ist, aufweist.
#if ( $unilinz )<strong> unilinz </strong>#end
Struktur des if-else Statements
#if( [condition] ) [output] [ #elseif( [condition] ) [output] ]* [ #else [output] ] #end
if - else Statement
Weiteres Beispiel mit einem #elseif Konstruckt:
#if ( $semester <= 2 ) <strong> 2.Stock </strong> #elseif ( $semester > 2) <strong> 4.Stock </strong> #else <strong> Cafeteria od Dozent
</strong> #end
Foreach Schleife
Das #foreach Element erlaubt das Iterieren über eine Liste wie zum Beispiel:
<ul> #foreach( $product in $allProducts ) <li>$product</li> #end </ul>
Hier eine Auflistung welche Collections von #foreach unterstützt werden:
- Object[] - java.util.Collection - java.util.Map - java.util.Iterator - java.util.Enumeration
Global Macros.vm
Definiert für das gesamte Framework,den Aufbau, Farbe, ... verschiedenster Macros(z.B listBox ....)Dadurch überall verwendbar
$link
Siehe Beispiel:
<a href=``$link.setpage(``helloworld.vm``)>
menueName</a>