2010-11-18 5 views

Antwort

0

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(); 
0

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.

+2

Siehe auch http://stackoverflow.com/questions/3019424/setting-freemarker-template-from-classpath –