我有两个不同的要求来使用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");
你能告诉我如何解决这个问题吗?
答案 0 :(得分:0)
我可以自己解决这个问题。
配置中有一个方法可用于设置模板位置和ServletContext。
xml
您只需要使用FTL位置将servletContext对象传递给上述方法。当您通过以下代码处理模板时,它将只获取文件并进行处理。
cfg.setServletContextForTemplateLoading(context, "WEB-INF/ftl");