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

Preview:

Citation preview

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>

Recommended