freemarker:模板加载器:从 zip 文件加载模板

Posted

技术标签:

【中文标题】freemarker:模板加载器:从 zip 文件加载模板【英文标题】:freemarker: template Loader : load templates from zip file 【发布时间】:2011-05-11 20:40:29 【问题描述】:

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

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

有可能吗?

【问题讨论】:

【参考方案1】:

这可能并不理想,但如果您只需要 load the text of the zipped template 文件,您可以从字符串中实例化 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(); 

【讨论】:

【参考方案2】:

我不知道 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”。

那么你可以把你的“源”树当成类,把它添加到你的类路径中,它应该就可以工作了。

【讨论】:

另见***.com/questions/3019424/…

以上是关于freemarker:模板加载器:从 zip 文件加载模板的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot + Apache Camel + Freemarker 自定义模板加载器

spring模板freemarker从项目的resources目录的data下加载文件,Java

spring模板freemarker从项目的resources目录的data下加载文件,Java

从数据库加载 FreeMarker 模板

freemarker模板加载TemplateLoader常见方式

如何使用 google.load 加载 javascript 文件,而不是直接使用 freemarker 模板语言中的标签?