1 / 23

- Velocity Template Engine

- Velocity Template Engine. Doppelhammer Eva, 0159008 Oberndorfer Norbert, 0155621. Inhalt. Was ist Velocity? Anwendungsbereich Vorteile / Nachteile Bsp: Standalone & Eingebettet (in Turbine) Velocity in Turbine Funktionsweise Syntax Beispiel. Was ist Velocity?.

mark-barnes
Download Presentation

- Velocity Template Engine

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. - Velocity Template Engine Doppelhammer Eva, 0159008 Oberndorfer Norbert, 0155621

  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 • 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. 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); Beispiel: Standalone 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. 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. Eingebettet in Turbine 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. Context MVC schematisch

  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. Falsch $Österreich $*Bereich $50jahre $_erledigt => muss mit Buchstaben anfangen Variablennamen Richtig • $hallo • $Hallo1 • $baum-haus • $baum_haus • $c_-504

  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. For Each – Schleife #foreach (Bedingung) Aktion #end Schleifenzähler: $velocityCount Bedingungen / Schleifen IF-Bedingung #if(Bedingung1) Aktion1 #elseif(Bedingung2) Aktion 2 #else Aktion 3 #end • Logische Operatoren NOT> !, AND> && OR> ||

  18. #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 Einfügen von Dateien #include (“statisch.html“) • Datei nicht bearbeitet • direkt eingefügt • liegen in TEMPLATE_ROOT • möglich Datei über Variable einfügen

  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: http://veloedit.sourceforge.net • Editor für .vm Dateien • Syntax Highlighting • Source Insight (auch bei eigenen Makros) • Strukturansicht • Einstellungen • Windows – Preferences – VelocityUI

  22. Beispiel: NewappVelocity User Guidehttp://jakarta.apache.org/velocity/user-guide.html

  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

More Related