Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
1
- Velocity Template Engine
- Velocity Template Engine Doppelhammer Eva, Oberndorfer Norbert,
2
Inhalt Was ist Velocity? Anwendungsbereich Vorteile / Nachteile
Bsp: Standalone & Eingebettet (in Turbine) Velocity in Turbine Funktionsweise Syntax Beispiel
3
Was ist Velocity? ...ist eine auf Java basierende Template Engine
...definiert eine einfache Sprache zur Textgenerierung …generiert beliebige Text-Dokumente (HTML, XML, usw.) ...ermöglicht den Zugriff auf Java-Objekte
4
Anwendungsbereich Standalone Eingebettet (meist in Web-Frameworks)
Code-Generierung (z.b Java-Files, C#, C++, …) Xml-Generierung Beliebige Textformate Eingebettet (meist in Web-Frameworks) Web-UI-Generierung (z.b. html, xml) Z.b. in Turbine
5
Vorteile / Nachteile + durch MVC: Trennung von Javacode und Internetseite (iG zu JSP / PHP)> + erhöhte Lesbarkeit + einfache Syntax, leicht erlernbar + stand-alone oder eingebettet (zB: Turbine) verwendbar + vielseitig einsetzbar (nicht nur UI-Generierung) Open-Source: Weiterentwicklung? Dokumentation? Nur für Java Anwendungen???
6
Beispiel: Standalone FileWriter fw = new FileWriter(“persons.csv”);
List persons = dbconnection.select(“* from Person”); Velocity.init(); VelocityContext context = new VelocityContext(); context.put(“persons", persons); Template template = Velocity.getTemplate(“personCSV.vm"); template.merge(context, fw); personCSV.vm Persons.csv #foreach($p in $persons) $p.FirstName ;$p.LastName #end Sepp ;Forcher Hans ;Huber Franz ;Maier Max ;Mustermann Helga ;Hofer Sonja ;Bauer
7
Eingebettet in Turbine
Die Initialisierung, Merge des Templates, Erzeugung des Context passiert automatisch durch das Turbine Framework (iG bei Standalone Einsatz (siehe Bsp.). Mit Hilfe der Velocity-Templates wird Html erzeugt. Eigene Screen/Action/Navigation-Klassen leiten von Turbine Klassen ab. (Meistens) muss die Methode doBuildTemplate(data, context) überschrieben werden. Darin erweitert man den Kontext um diejenigen Daten, die im Screen/ in der Navigation dargestellt werden sollen. Das zugehörige Template wird nach Methodenaufruf automatisch gefunden und ausgeführt. newapp.modules.screens.Index templates/screens/Index.vm doBuildTemplate(Rundata d, Context ctx) { List rdfList = RdfPeer.doSelect(…); ctx.put(“entries“, rdfList) } #foreach ($entry in $entries) <tr> #entryCell ($entry.Title) #entryCell ($entry.Dept) </tr> #end
8
Velocity in Turbine Model View Controller
Torque OM Klassen> Modell Turbine Screens und Actions> Controller Velocity Templates> View Context ist Schnittstelle zwischen Controller und View Action/Screen/Navigation füllt Context Velocity Templates greifen auf den Context zu
9
MVC schematisch Context
10
Funktionsweise Konzept des „Context“ ist zentral in Velocity
...fungiert als Daten-Container zwischen Systemteile Systemteile sind Java-Layer (Programmierer) und Template-Layer (Designer) Programmierer sammelt Objekte und stellt sie in den Context; zB.: context.put(„persons“, getListOfPersons(); Designer kann nun auf diese Objekte (inkl deren Methoden und Attribute) über die Templates zugreifen Zusammenarbeit zwischen Designer und Programmierer (Schnittstellendefinition)!!!!!
11
Syntax Variablen deklarieren Kommentare Methoden / Eigenschaften
Bedingungen / Schleifen Makros Velocity benützen
12
Variablen Wertzuweisung durch #set-Befehl im Template
#set ($hallo = “Griasti“) vom Java-Code Context Wenn Javavariable $hallo Wert “hi“ zum Zeitpunkt der Anfrage auf das Template => Output immer “hi“
13
Variablennamen Richtig $hallo $Hallo1 $baum-haus $baum_haus $c_-504
Falsch $Österreich $*Bereich $50jahre $_erledigt => muss mit Buchstaben anfangen
14
Kommentare kurzer Kommentar ## einzeiliger Kommentar Kommentarblock
#*Kommentar über mehrere Zeilen *#
15
Eigenschaften / Methoden
Methode aufrufen $lva.raum(), $mitarbeiter.getName(), $lva.setbesuchen([“PR Software“, “SE IE“, “PROST IE“]) Eigenschaft aufrufen / Kurzform Aufruf einer Methode $lva.leiter Spezielle Fälle Ich bin ${zahl}zehn. <input type = “text“ name = “Vorname“ value = “$!vorname“/> \$name
16
Aufruf im Template Methode $lva.getLeiter() aufrufen vom Template aus mit $lva.Leiter. Velocity sucht nach: 1: $lva.getleiter 2: $lva.getLeiter
17
Bedingungen / Schleifen
IF-Bedingung #if(Bedingung1) Aktion1 #elseif(Bedingung2) Aktion 2 #else Aktion 3 #end Logische Operatoren NOT> !, AND> && OR> || For Each – Schleife #foreach (Bedingung) Aktion #end Schleifenzähler: $velocityCount
18
Einfügen von Dateien Datei nicht bearbeitet direkt eingefügt
#include (“statisch.html“) Datei nicht bearbeitet direkt eingefügt liegen in TEMPLATE_ROOT möglich Datei über Variable einfügen #parse (“personTable.vm“) Datei wird bearbeitet enthält VTL (velocity template language) nur 1 Datei übergeben Templates in TEMPLATE_ROOT kann wiederum #parse- Befehle enthalten – 10 Ebenen #stop Unterbrechen der Ausführung Template auf andere Folie
19
Makros: Velocimacros Auslagerung von Scriptelementen Zeitersparnis
einmalig definiert Wiederholungen erspart Sktruktur #makro (testmakro) #end Aufruf im Template #testmakro ()
20
Makros: Velocimacros Erkennung
Referenzen, Zeichenketten, Ziffern, IntegerRange, Objektarrys, Boolean Übergibt man einem Makro als Parameter eine Methode, so wird diese bei jedem Zugriff ausgeführt #table5($counter.increase()) #macro table5($value)
21
Eclipse: Velocity Plugin
unter: Editor für .vm Dateien Syntax Highlighting Source Insight (auch bei eigenen Makros) Strukturansicht Einstellungen Windows – Preferences – VelocityUI
22
Beispiel: Newapp Velocity User Guide http://jakarta. apache
23
Velocity Einstellungen in Turbine
TurbineResources.properties # # # M O D U L E P A C K A G E S # This is the "classpath" for Turbine. In order to locate your own # modules, you should add them to this path. For example, if you have # com.company.actions, com.company.screens, com.company.navigations, # then this setting would be "com.company,org.apache.turbine.modules". # Default: org.apache.turbine.modules module.packages=org.mycompany.newapp.modules,org.apache.turbine.flux.modules # V E L O C I T Y S E R V I C E services.VelocityService.file.resource.loader.path = /templates/app,/templates/flux services.VelocityService.velocimacro.library = GlobalMacros.vm
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.