freemaker:使用类加载器从不同路径读取模板

时间:2016-07-07 05:57:59

标签: java templates freemarker

我在路径TemplateLoader中有src/main/java个班级 我的模板文件位于src/resources/template

当我尝试使用以下代码

加载模板时
Configuration config = new Configuration(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS);
        config.setClassForTemplateLoading(this.getClass(), "/");

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

它出现以下错误:

  

freemarker.template.TemplateNotFoundException:找不到模板   name" resources / template / test.ftl"。

文件位于正确的位置。那么如何使用免费标记加载此文件?

1 个答案:

答案 0 :(得分:1)

问题是resources仅存在于源代码中(它是Maven的东西),但不存在于已编译的项目中。所以它应该是config.getTemplate( "template/test.ftl");。但是,如果您使用config.setClassForTemplateLoading(this.getClass(), "/template");然后config.getTemplate( "test.ftl");,情况会更好。拥有模板根目录的目的是使实际位置透明,并防止模板包含的安全问题,从而暴露出不是模板的任意资源。