freemarker:template Loader:从zip文件加载模板

时间:2010-11-18 06:19:55

标签: freemarker

是否可以从zip文件中加载freemarker模板?

我想将所有模板压缩到一个文件中并将其放入我的应用程序中。

有可能吗?

2 个答案:

答案 0 :(得分:0)

这可能不太理想,但如果您只是load the text of the zipped template个文件,则可以从String中实例化FreeMarkerTemplate。我给了你一个如何在下面完成它的例子,但我建议你也阅读the freemarker documentation。 (查看“入门”选项卡)

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

答案 1 :(得分:0)

我不知道zip文件,但您可以使用'classForTemplateLoading'功能从jar文件加载它们:

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);
    }
}

例如,如果模板“MyTemplate.ftl”位于“com.mycode.templates”包中,则路径为“/com/mycode/templates/MyTemplate.ftl”。

那么你就可以把你的'source'树装扮成类,把jar添加到你的类路径中,它应该只是工作。