我在路径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"。
文件位于正确的位置。那么如何使用免费标记加载此文件?
答案 0 :(得分:1)
问题是resources
仅存在于源代码中(它是Maven的东西),但不存在于已编译的项目中。所以它应该是config.getTemplate( "template/test.ftl");
。但是,如果您使用config.setClassForTemplateLoading(this.getClass(), "/template");
然后config.getTemplate( "test.ftl");
,情况会更好。拥有模板根目录的目的是使实际位置透明,并防止模板包含的安全问题,从而暴露出不是模板的任意资源。