2017-02-23 3 views
0

Ich möchte Freemarker mit Vorlagen aus der Datenbank verwenden. Vorlagen ändern sich manchmal. Ich möchte eine Function<String, String> erstellen, die einen Vorlagennamen nimmt und aktuelle Vorlage aus der Datenbank zurückgibt.Freemarker: Vorlage mit benutzerdefinierter Funktion neu laden

Wie kann ich Freemarker sieht Vorlagen nach x Minuten abgestanden und ruft nur meine Funktion jedes Mal, wenn es neue Version der Vorlage benötigt? oder vielleicht ein anderes Templating bietet solche Funktionalität aus der Box?

Antwort

1

Es gibt eine Konfigurationseinstellung namens template_update_delay oder mit Java API Configuration.setTemplateUpdateDelayMilliseconds(long). Dies entscheidet, wie oft FreeMarker prüft, ob ein Vorlagen-Cache-Eintrag veraltet ist. (Das geschieht nur, wenn Sie die Vorlage benötigen und der Cache-Eintrag älter ist.) Ich schätze, Sie sollten sich darauf verlassen.

Es gibt auch Configuration.removeTemplateFromCache, falls Sie über Vorlagenänderungen benachrichtigt werden.

+0

und wie wird die Vorlagenlieferfunktion eingefügt, die jedes Mal ausgelöst wird, wenn eine neuere Vorlage geladen werden soll? Die einzige Möglichkeit besteht darin, einen benutzerdefinierten Vorlagenlader bereitzustellen. – piotrek

+0

Ja, Sie tun das über einen benutzerdefinierten 'TemplateLoader'. – ddekany

Verwandte Themen