【问题标题】:Freemarker Template to access Freemarker files from the path WEB-INF\ftl\Freemarker 模板从路径 WEB-INF\ftl\ 访问 Freemarker 文件
【发布时间】:2015-09-11 11:58:42
【问题描述】:

我对使用 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 或 File 接受。

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

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

【问题讨论】:

    标签: java freemarker


    【解决方案1】:

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

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

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

    您只需要将 servletContext 对象与 FTL 位置一起传递给上述方法。当您通过以下代码处理模板时,它只会拾取文件并处理它。

    Template template = cfg.getTemplate("helloworld.ftl");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-28
      • 2011-03-02
      • 1970-01-01
      • 2021-07-27
      • 2016-07-21
      • 2021-09-13
      • 2012-10-13
      • 2012-05-22
      相关资源
      最近更新 更多