1 / 44

Velocity Workshop

Velocity Workshop. Templatesprache im Turbine-Kontext. Was ist Velocity?. Java-basierte Template-Engine Verwendung für Code-Generierung Email-Templating Web-UI-Erzeugung Im Zusammenspiel mit Turbine: Fokus auf Web-UI-Erzeugung. Wie funktioniert Templating?. Velocity.

raquel
Download Presentation

Velocity Workshop

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 Workshop Templatesprache imTurbine-Kontext SE Projekt

  2. Was ist Velocity? • Java-basierte Template-Engine • Verwendung für • Code-Generierung • Email-Templating • Web-UI-Erzeugung Im Zusammenspiel mit Turbine: Fokus auf Web-UI-Erzeugung SE Projekt

  3. Wie funktioniert Templating? Velocity SE Projekt

  4. Modell-View-Controller Velocity SE Projekt

  5. Vorteile des Templating • Trennung von Content / Layout dadurch • Trennung von Programmierer / Designer • Referenzierung von Methoden, die in Java geschrieben sind (Velocity) SE Projekt

  6. Velocity und Turbine • Velocity verwendet Referenzen aus dem Turbine-Context • Velocity repräsentiert den View-Teil • Turbine repräsentiert den Modell & Controller-Teil SE Projekt

  7. Seitenaufbau Führt evt. notwendigeActions aus. Physikalische Strukturder zu erzeugenden Web-Site Stellt den eigentlichen Körper der Web-Site dar. Verantwortlich für Benutzerinteraktion und Datenanzeige. SE Projekt

  8. Aufrufreihenfolge • Aufruf mit • http://..../HelloWorld.vm SE Projekt

  9. Sprachkonzepte SE Projekt

  10. Velocity Template Language (VTL) • Kommentare • Variablen/Methoden • Wichtige Befehle SE Projekt

  11. Kommentare • Kommentarzeile ## Das ist ein Kommentar! • Kommentarblock #* Das ist ein Kommentarblock! *# SE Projekt

  12. Variablen • Notation: $ [ ! ][ { ][ a..z, A..Z ][ a..z, A..Z, 0..9, -, _ ][ } ] • Beispiele: • $count-x • $!count-x • ${count-x} • \$count-x SE Projekt

  13. Methoden • Aufruf einer Methode $kunde.getKundennr() • Kurze Schreibweise bei get/set Methoden $kunde.Kundennr SE Projekt

  14. Wichtige Befehle #set #if #foreach #stop #include #parse #macro SE Projekt

  15. #set (1) • Notation: #set( $ref = [",‘]arg[",‘] ) • Beispiele: #set( $name = "Markus„ ) #set( $test.Feld = ["E1","E2"] ) #set( $test.Feld2 = [1..10]) #set( $test.Map = {"schlüssel1":"wert1","s2":"w2"} )(ab Velocity v1.4) SE Projekt

  16. #set (2) • Ist der rechte Ausdruck einer #set Anweisung leer, wird NICHT null zugewiesen!! • Text zwischen einfachen Anführungszeichen wird NICHT geparsed! Kann in der Datei velocity.properties umgestellt werden. SE Projekt

  17. #if #if ( $Name == "Franz" || $Name == "Huber" ) Huber Franz #elseif unbekannt #end • Logische Operatoren NOT -> ! AND -> && OR -> || SE Projekt

  18. #foreach #foreach( $product in $allProducts ) <li>$product</li> #end • Verfügbarer Schleifenzähler $velocityCount • Beginnt standardmäßig bei 1, dies kann jedoch in der Datei velocity.properties auf 0 geändert werden. SE Projekt

  19. #stop • Beendet die Übersetzung eines Velocity Templates • Dies kann beim Debuggen sinnvoll sein. SE Projekt

  20. #include • Notation: #include( arg[, arg2, … argn] ) • Beispiel: #include ( "lieferantenliste.txt", $kundenliste ) • Die eingefügten Dateien werden NICHT übersetzt. SE Projekt

  21. #parse • Notation: #parse( arg ) • Beispiel: #parse ( "kundenausgabe.vm") • Die eingefügten Dateien werden übersetzt. • Es kann nur eine Datei auf einmal eingefügt werden! SE Projekt

  22. #macro (1) • Notation: #macro( vmname $arg1 [ $arg2 $arg3 ... $argn ] ) [ VM VTL code... ] #end • Beispiel #macro ( listenausgabe $liste ) #foreach $elem in $liste <tr><td>$elem</td></tr> #end #end SE Projekt

  23. #macro (2) • Anwendung #set ( $liste = [‘‘Zeile 1",‘‘Zeile 2"] ) <table> #listenausgabe ( $liste ) </table> • Übergibt man einem Makro als Parameter eine Methode, so wird diese bei jedem Zugriff ausgeführt. SE Projekt

  24. Velocity im Turbine Context SE Projekt

  25. Velocity und Turbine Context • Verknüpfung zwischen Javacode und Template • Verwaltung in einer Hashtable • Objekte: • RunData • TemplateLink • TemplatePageAttributes • Manuelles Hinzufügen von Objekten möglich SE Projekt

  26. Verwendung RunData (1) • Referenzierung im Velocity mit $data • Alle public Methoden des Objekts verfügbar • Sehr große Anzahl an Methoden Gesamtliste unter Turbine Javadocs • Nachfolgend einige wichtige aufgezählt SE Projekt

  27. Verwendung RunData (2) • getMessage() • addMessage(String msg) • getTitle() • getUser() • getServerName() • setRedirectUri(String ruri) • getTemplateInfo() SE Projekt

  28. Verwendung TemplateLink (1) • Referenzierung im Velocity mit $link • Klasse TemplateLink eine Erweiterung der Klasse DynamicURI • Verwendung: Erzeugung von URIs • Bspw. Zu einem anderen Template:$link.setPage(„newpage.vm“) SE Projekt

  29. Verwendung TemplateLink (2) • setPage(String templatename) • addPathInfo(String name, String value) • addQueryData(String name, String value) • getScriptName() • getServerData() • setAction(String action) • setScreen(String screen) • setSecure() SE Projekt

  30. Verwendung TemplatePageAttributes (1) • Referenzierung im Velocity mit $page • Damit können bestimmte HTML – Eigenschaften gesetzt werden • Hintergrundfarbe • Titel • Textfarbe • Usw. SE Projekt

  31. Verwendung TemplatePageAttributes (2) • addAttribute(String name, String value) • getTitle() • setBackground(String url) • setBgColor(String color) • setTextColor(String color) • setKeywords(String description) • setLinkColor(String color) SE Projekt

  32. Eigene Objekte im Turbine Context (1) • Context wird mit Hashtable verwaltet • Objekte beliebigen Typs können hinzugefügt werden • Danach alle public Methoden des Objekts im Template (Velocity) verfügbar • Hinzufügen von Objekten mit dem Wert NULL  NullPointerException SE Projekt

  33. Eigene Objekte im Turbine Context (2) • Beispiel String-Objekt • Im Javacode: • context.put(„hello“,new String(„testing“)) • Im Template: • $hello the hello reference • Ergibt als Output: • testing the hello reference SE Projekt

  34. Actions SE Projekt

  35. Actions Aufruf mit HelloWorld.vm/action/UpdateWorldHelloWorld.vm/action/UpdateWorld_MethodName • Ruft das Template HelloWorld.vm auf • Vorher wird die VelocityAction UpdateWorld ausgeführt SE Projekt

  36. Velocity Einstellungen SE Projekt

  37. Konfiguration • richtige Ordnerstruktur • Einstellungen in der TurbineRessources.properties SE Projekt

  38. Turbine Ordnerstruktur SE Projekt

  39. templates Ordner • Enthält alle Velocity Templates (.vm) • app - GlobalMacros.vm • layouts - übergeordnete Layout • navigation – Navigationselemente • screens – eigentlichen Inhalte SE Projekt

  40. src Ordner • spiegelt Struktur im class Ordner wieder • modules – zu *.vm zugehöriger Java Code • screens – eigentliche Inhaltssteuerung • actions – spezielle Aktionen SE Projekt

  41. Einstellungen • unter WEB-INF\conf\ • in der (Text-)Datei TurbineRessources.properties SE Projekt

  42. Einstellungen 1/2 F R A M E W O R K S E T T I N G S • template.homepage=Index.vm • template.login=Login.vm • template.error=Error.vm T E M P L A T E S E R V I C E • services.TemplateService.layout.cache.size=2 • services.TemplateService.navigation.cache.size=10 • services.TemplateService.screen.cache.size=50 SE Projekt

  43. Einstellungen 2/2 V E L O C I T Y S E R V I C E • services.VelocityService.default.layout.template = Default.vm • services.VelocityService.velocimacro.library = GlobalMacros.vm • services.VelocityService.file.resource.loader.path = /templates/app C A C H I N G • services.VelocityService.file.resource.loader.cache = false • services.VelocityService.file.resource.loader.modification CheckInterval = 2 • services.VelocityService.velocimacro.library.autoreload = true SE Projekt

  44. Eclipse: Velocity Plugin • unter: http://veloedit.sourceforge.net • Unterstützt beim Bearbeiten von .vm Dateien • Syntax Highlighting • Source Insight (auch bei eigenen Makros) • Strukturansicht • ... SE Projekt

More Related