ist es möglich Fremarker-Templates aus einer Zip-Datei zu laden?Freimarker: Template Loader: Laden von Templates aus der Zip-Datei
Ich möchte alle Vorlagen in einer einzigen Datei komprimieren und in meine Anwendung einfügen.
ist es möglich?
ist es möglich Fremarker-Templates aus einer Zip-Datei zu laden?Freimarker: Template Loader: Laden von Templates aus der Zip-Datei
Ich möchte alle Vorlagen in einer einzigen Datei komprimieren und in meine Anwendung einfügen.
ist es möglich?
Es ist vielleicht nicht ideal, aber wenn Sie nur load the text of the zipped template Dateien würden, können Sie ein FreeMarkerTemplate aus dem String instanziieren. Ich habe Ihnen ein Beispiel gegeben, wie es im Folgenden gemacht werden könnte, aber ich empfehle auch, the freemarker documentation zu lesen. (Überprüfen Sie die Registerkarte Erste Schritte)
dh
Configuration cfg = new Configuration();
//configuring default free marker configuration
cfg.setObjectWrapper(new DefaultObjectWrapper());
//construct template from string
String templateText = "";//load template text from zip file
Template template= new Template("sometemplate", new StringReader(templateText), cfg);
//your data model
Object root = new Object();
//process template
StringWriter out = new StringWriter();
template.process(new Object(), out);
String renderedText= out.toString();
Ich weiß nicht, über eine Zip-Datei, aber man kann sie aus einer JAR-Datei laden mit dem ‚classForTemplateLoading‘ -Funktion:
public class MyLoader
{
private static Configuration cfg = new Configuration();
static
{
cfg.setClassForTemplateLoading(MyLoader.class, "/");
}
public Template getTemplate(String path) throws Throwable
{
return cfg.getTemplate(path);
}
}
Wenn sich beispielsweise Ihre Vorlage "MyTemplate.ftl" im Paket "com.mycode.templates" befindet, lautet der Pfad "/com/mycode/templates/MyTemplate.ftl".
Also dann würden Sie Ihren 'Source' Baum jar, als wäre es Klassen, fügen Sie das Glas zu Ihrem Klassenpfad und es sollte alles funktionieren.
Siehe auch http://stackoverflow.com/questions/3019424/setting-freemarker-template-from-classpath –