Thymeleaf ohne Servlet in Standalone-Anwendungen nutzen

Thymeleaf ist eine Template Engine, welche für die Nutzung mittels Java (oder anderer JVM-Sprachen) gedacht ist. Über diese können entsprechende Templates geschrieben werden, anschließend gefüllt und genutzt werden. Thymeleaf verfügt über eine Dokumentation, allerdings fehlt mir dort ein minimales Beispiel für Anwendungen, welche sich nicht im Web (sogenannte non-web environments) abspielen.

thymeleaf.org

Für ein minimales Beispiel wird natürlich ein Template benötigt. Dieses wird hier als HTML definiert:

<!DOCTYPE html>
<html>
<head>
    <title th:text="${title}"></title>
</head>
<body>
</body>
</html>

Interessant ist hierbei das Feld title, welches wir mit einem Titel füllen wollen. Im Java-Quellcode sieht die Implementation wie folgt aus:

ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver();
resolver.setPrefix("templates/");
resolver.setTemplateMode("HTML5");
resolver.setSuffix(".html");

TemplateEngine templateEngine = new TemplateEngine();
templateEngine.setTemplateResolver(resolver);

Context context = new Context(Locale.GERMAN);
context.setVariable("title", "Ein minimales Beispiel");

final String content = templateEngine.process("header.html", context);

Im ersten Schritt wird mit dem ClassLoaderTemplateResolver ein Resolver definiert, welcher schlussendlich dafür sorgt die Templates aus den Ressourcen (im resources-Ordner) bezogen werden. Daneben wird der Template-Modus eingestellt. Neben dem Modus HTML5 unterstützt Thymeleaf wie z.B. TEXT oder JAVASCRIPT. Danach wird die Template Engine erstellt und ihr der Resolver zugewiesen. Die Variablen, welche in diesem Fall im Template genutzt werden, werden über den Context definiert und gesetzt. Anschließend wird das Ganze an die process-Methode der Template Engine übergeben. Als Ergebnis erhalten wir im String content folgenden Inhalt:

<!DOCTYPE html>
<html>
<head>
    <title">Ein minimales Beispiel</title>
</head>
<body>
</body>
</html>

Damit wurde Thymeleaf in einer minimalen Variante angewendet. Die offizielle Seite der Template Engine ist unter thymeleaf.org zu finden. Lizenziert ist Thymeleaf unter der Apache License in der Version 2.0 und damit freie Software.

Scrivener Template importieren

Gestern hatte wolle ich eine Projektvorlage in Scrivener importieren. Dazu öffnete ich die scrivtemplate-Datei mittels Scrivener. Anschließend teilte Mac OS X mir mit das die Scrivener-App keine Dateien vom Typ scrivtemplate verarbeiten kann. Das verwundert im ersten Moment natürlich, da die Dateien speziell für Scrivener erstellt wurden.

Der "Neues Projekt"-Dialog unter Scrivener

Der “Neues Projekt”-Dialog unter Scrivener

Statt der intuitiven Variante muss man leider anders vorgehen. Im ersten Schritt wird Scrivener gestartet. Anschließend wird der Neues Projekt-Dialog aufgerufen. In dem Dialog gibt es links unten einen Button mit dem Titel Optionen. In dem sich öffnenden Submenü gibt es dann den Punkt Vorlagen importieren. Mit dieser Funktion kann die scrivtemplate-Datei importiert werden und danach im Neues Projekt-Dialog genutzt werden.

Website Baker Template

Da ich für einige meiner Seiten das Content Management System Website Baker benutzte wollte ich heute mal ein Template für eben dieses CMS erstellen. Der Hintergrund ist das ich eine meiner Webseiten ebenfalls auf dieses CMS umstellen möchte. Meine erste Anlaufstelle war die sehr ausführliche Dokumentation unter http://help.websitebaker.org/pages/de/advanced-doku/designer-guide.php. Dann ging erst einmal das Lesen los.

Als erstes nimmt man die HTML Vorlage und baut in diese Vorlage die Metatags ein. Hier tauchten dann die ersten Probleme auf, weil nicht alles so passte wie es sollte. Das Problem lag unter anderem daran das mein Vorlagelayout noch auf Tabellenbasis funktionierte und sich das nicht wirklich in ein Template umsetzen ließ. Also nahm ich erst einmal die Vorlage und baute Sie auf ein

basierendes Design um.

Nachdem das geschafft war, fing ich wieder an die Metatags einzufügen. Das ging auch ganz gut. Nach dem ersten Test zu urteilen muss aber noch hier und da einiges angepasst werden. Vor allem das Menü ist noch nicht so wie es soll. Aber für den Anfang schon mal nicht schlecht.