2016-07-07 7 views
1

Ich habe meine TemplateLoader Klasse auf dem Weg src/main/java und meine Vorlagendateien auf src/resources/templatefreemaker: Lesen Vorlage aus anderen Pfad-Klasse loader

angeordnet sind, wenn ich versuche, Vorlage zu laden, unter Code

Configuration config = new Configuration(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS); 
     config.setClassForTemplateLoading(this.getClass(), "/"); 

Template template = config.getTemplate("resources/template/test.ftl"); 

es gibt folgende Fehlermeldung:

freemarker.template.TemplateNotFoundException: Template nicht fürgefundenName "Ressourcen/Vorlage/test.ftl".

Die Datei ist an der richtigen Stelle vorhanden. Also, wie kann ich diese Datei laden freie Marker?

+0

Kann das Beispiel aktualisieren, indem 'Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS' durch eine konkrete Version ersetzt wird? Es ist eine schlechte Übung, die nicht kopiert werden sollte. – ddekany

Antwort

1

Das Problem ist, dass resources nur in Ihrem Quellcode existiert (es ist eine Maven-Sache), aber nicht im kompilierten Projekt. Also sollte es config.getTemplate("template/test.ftl"); sein. Es wäre jedoch schöner, wenn Sie config.setClassForTemplateLoading(this.getClass(), "/template"); und dann config.getTemplate("test.ftl"); verwenden. Der Zweck eines Vorlagenstammverzeichnisses besteht darin, den tatsächlichen Speicherort transparent zu machen und Sicherheitsprobleme zu vermeiden, wenn eine Vorlage eine willkürliche Ressource enthält, die keine Vorlage ist.

+0

danke. es hat mein Problem gelöst. –