24
Präsentation Velocity

Präsentation Velocity. Velocity Allgemein Templets Zusammenhang Templets Java Kontext $ UI $link

Embed Size (px)

Citation preview

Page 1: Präsentation Velocity. Velocity Allgemein Templets Zusammenhang Templets Java Kontext $ UI $link

Präsentation Velocity

Page 2: Präsentation Velocity. Velocity Allgemein Templets Zusammenhang Templets Java Kontext $ UI $link

Velocity

Allgemein Templets Zusammenhang Templets Java Kontext $ UI $link

Page 3: 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

Page 4: Präsentation Velocity. Velocity Allgemein Templets Zusammenhang Templets Java Kontext $ UI $link

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.

Page 5: Präsentation Velocity. Velocity Allgemein Templets Zusammenhang Templets Java Kontext $ UI $link

Beispiel für die Trennung

kleines Template mit dem Namen helloworld.vm:

 

Hello $name! Welcome to Velocity!

Page 6: Präsentation Velocity. Velocity Allgemein Templets Zusammenhang Templets Java Kontext $ UI $link

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() );}}

Page 7: Präsentation Velocity. Velocity Allgemein Templets Zusammenhang Templets Java Kontext $ UI $link

Beispiel

Hello World! Welcome to Velocity!

Page 8: Präsentation Velocity. Velocity Allgemein Templets Zusammenhang Templets Java Kontext $ UI $link

Context

basiert auf einem Container der zwischen verschiedenen Layern(Schichten) Daten transferieren kann

Verbindung zwischen Designer und Programmierer

Benützung wie eine Hash-Tabelle

Page 9: Präsentation Velocity. Velocity Allgemein Templets Zusammenhang Templets Java Kontext $ UI $link

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");

Page 10: Präsentation Velocity. Velocity Allgemein Templets Zusammenhang Templets Java Kontext $ UI $link

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()

Page 11: Präsentation Velocity. Velocity Allgemein Templets Zusammenhang Templets Java Kontext $ UI $link

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

Page 12: Präsentation Velocity. Velocity Allgemein Templets Zusammenhang Templets Java Kontext $ UI $link

Parse

Ergebnis-- > 8-- > 7-- > 6-- > 5-- > 4-- > 3-- > 2-- > 1All done with parseRekursion.vm!

Page 13: Präsentation Velocity. Velocity Allgemein Templets Zusammenhang Templets Java Kontext $ UI $link

Stop

Mit dem #stop Element kann der Designer die Ausführung des Scripts stoppen (Fehlersuche)

Page 14: Präsentation Velocity. Velocity Allgemein Templets Zusammenhang Templets Java Kontext $ UI $link

$ UI

Ermöglicht ein einheitliches Design– Schrift (Farbe, Typ, Größe)– Hintergrund– Bilder

– Wird in einer eigenen Datei gespeichert• UI Ordner• .props

Page 15: Präsentation Velocity. Velocity Allgemein Templets Zusammenhang Templets Java Kontext $ UI $link

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

Page 16: Präsentation Velocity. Velocity Allgemein Templets Zusammenhang Templets Java Kontext $ UI $link

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, -,

Page 17: Präsentation Velocity. Velocity Allgemein Templets Zusammenhang Templets Java Kontext $ UI $link

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"] )

Page 18: Präsentation Velocity. Velocity Allgemein Templets Zusammenhang Templets Java Kontext $ UI $link

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

Page 19: Präsentation Velocity. Velocity Allgemein Templets Zusammenhang Templets Java Kontext $ UI $link

Struktur des if-else Statements

#if( [condition] ) [output] [ #elseif( [condition] ) [output] ]* [ #else [output] ] #end

Page 20: Präsentation Velocity. Velocity Allgemein Templets Zusammenhang Templets Java Kontext $ UI $link

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

Page 21: Präsentation Velocity. Velocity Allgemein Templets Zusammenhang Templets Java Kontext $ UI $link

Foreach Schleife

Das #foreach Element erlaubt das Iterieren über eine Liste wie zum Beispiel:

<ul> #foreach( $product in $allProducts ) <li>$product</li> #end </ul>

Page 22: Präsentation Velocity. Velocity Allgemein Templets Zusammenhang Templets Java Kontext $ UI $link

Hier eine Auflistung welche Collections von #foreach unterstützt werden:

- Object[] - java.util.Collection - java.util.Map - java.util.Iterator - java.util.Enumeration

Page 23: Präsentation Velocity. Velocity Allgemein Templets Zusammenhang Templets Java Kontext $ UI $link

Global Macros.vm

Definiert für das gesamte Framework,den Aufbau, Farbe, ... verschiedenster Macros(z.B listBox ....)Dadurch überall verwendbar

Page 24: Präsentation Velocity. Velocity Allgemein Templets Zusammenhang Templets Java Kontext $ UI $link

$link

Siehe Beispiel:

<a href=``$link.setpage(``helloworld.vm``)>

menueName</a>