Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

- Velocity Template Engine

Ähnliche Präsentationen


Präsentation zum Thema: "- Velocity Template Engine"—  Präsentation transkript:

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


Herunterladen ppt "- Velocity Template Engine"

Ähnliche Präsentationen


Google-Anzeigen