gpt4 book ai didi

java - 用于从路径 WEB-INF\ftl\访问 Freemarker 文件的 Freemarker 模板

转载 作者:太空宇宙 更新时间:2023-11-04 13:44:00 26 4
gpt4 key购买 nike

使用 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。但我没有看到任何方法来接受文件作为输入流或文件。

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

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

最佳答案

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

配置中有一个可用的方法,您可以在其中设置模板位置和 ServletContext。

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

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

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

关于java - 用于从路径 WEB-INF\ftl\访问 Freemarker 文件的 Freemarker 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31040846/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com