Freemarker模板从WEB-INF \ ftl路径访问Freemarker文件

时间:2015-06-25 03:44:36

标签: java freemarker

我有两个不同的要求来使用Freemarker模板。一种是打印网页的某些部分,另一种是生成自定义的HTML文件。我已将所有FTL文件放在 WEB-INF / ftl / 路径下.Web应用程序从上面的位置提取正确的FTL文件并打印网页。当我必须生成HTML文件时,Freemarker无法找到相应的FTL文件。

我尝试将该特定FTL文件保留在 resources / ftl / 下,但仍然无法获取该文件。我在src下创建了一个包并放置了FTL。 Maven不接受该包,因为它没有java文件。

Configuration cfg = new Configuration();
    cfg.setClassForTemplateLoading(this.getClass(), "");
    Template template = cfg.getTemplate("helloworld.ftl");

我可以考虑以两种不同的方式解决这个问题。一种方法是将文件保留在项目内或类路径中,以便Freemarker选择。其他方法是将其作为InputStream并将其传递给Freemarker。但我没有看到任何方法接受该文件作为InputStream或文件。

ServletActionContext.getServletContext().getResourceAsStream("WEB-INF/ftl/helloworld.ftl");

你能告诉我如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我可以自己解决这个问题。

配置中有一个方法可用于设置模板位置和ServletContext。

xml

您只需要使用FTL位置将servletContext对象传递给上述方法。当您通过以下代码处理模板时,它将只获取文件并进行处理。

cfg.setServletContextForTemplateLoading(context, "WEB-INF/ftl");