Freemarker: Behandlung von undefinierten Werten

Die Standard-Templatesprache zur Generierung von Webseiten mit Java bilden die
Java Server Pages (JSP). Eine gute Alternative zu JSPs ist die Templatesprache Freemarker, mit der sich eine striktere Trennung zwischen Anwendungslogik und View durchsetzen lässt. Wie die Integration von verschiedenen Templatesprachen mit Spring-MVC erfolgt, habe ich in diesem Artikel beschrieben: Velocity, Freemarker, Jade4J – Alternativen zu JSPs

Beim Einsatz von Freemarker muss man darauf achten, dass alle Modell-Werte korrekt gefüllt sind, damit die Platzhalter im Template korrekt ersetzt werden können. Falls ein Wert nicht vorhanden ist, wird mit der Freemarker-Standardkonfiguration Folgendes passieren:

  1. Freemarker wirft eine Exception: freemarker.core.InvalidReferenceException
  2. die Fehlermeldung wird geloggt
  3. das weitere Generieren der Seite wird abgebrochen
  4. die Webseite zeigt dann eventuell eine halb fertig generierte Seite oder einen Stacktrace der Exception an

Das ist zwar während der Entwicklung ganz praktisch, aber die Anwender sollten natürliche keine fehlerhafte Seite sehen. Zur Vermeidung von Fehlermeldungen, wenn ein Wert nicht gesetzt ist, können wir folgendes tun:

  • Default-Werte im Template definieren
  • einen anderen Freemarker-Exception-Handler verwenden

Weiterlesen

Velocity, Freemarker, Jade4J – Alternativen zu JSPs

Webanwendungen auf Java-Basis werden heutzutage größtenteils mit Hilfe eines umfangreichen Webframeworks (wie Java Server Faces, Google Web Toolkit oder Wicket) realisiert. Viele dieser Technologien bringen ihre eigene Templatesprache mit, die HTML um eigene Elemente erweitern. Falls man allerdings die Web-Basistechnologien Servlets/JSPs nutzt oder das Webframework neben JSPs auch andere Templatesprachen unterstützt (wie Spring MVC), wird der Einsatz einer alternativen Templatesprache vielleicht mit höherer Produktivität und mehr Spaß belohnt.

Solange man nur auf eine Templatesprache wie JSP beschränkt ist, braucht man sich auch keine Gedanken um die Effizienz der eingesetzten Sprache zu machen. Aber in diesem Artikel möchte ich dazu animieren, andere Templatesprachen mal auszuprobieren. Deren produktiven Einsatz sollte man sich natürlich zuvor gut überlegen – einige Aspekte sind beispielsweise:

  • Sprache: Einfachheit und Klarheit versus Ausdrucksstärke und Komplexität
  • Erweiterungen: Erstellung und Einbindung von Bibliotheken (z.B.: Tag-Libraries für JSPs)
  • Werkzeuge: Unterstützung innerhalb von Editoren/IDEs (z.B.: Syntax-Highlighting)
  • Mitarbeiter: Know-How im Team und Bereitschaft neue Sprachen zu lernen

Weiterlesen