java - 尝试获取 ftl 模板时未找到文件异常

标签 java freemarker filenotfoundexception

我编写了一个java程序,其中我必须渲染ftl并在字符串变量中获取输出。 请在下面找到我的代码:

Configuration cfg = new Configuration();
StringWriter stringWriter = new StringWriter();
try 
{
       Template template = cfg.getTemplate("src/response.get.html.ftl");
       model.put("content",contextModel);
       template.process(model, stringWriter);
       System.out.println(stringWriter);

} 

但是我在 Template template = cfg.getTemplate("src/response.get.html.ftl"); 中遇到文件未找到异常

我已将我的响应文件放在 src 中,并将我的 java 文件放在 com.test.webscripts 包中。根据http://viralpatel.net/blogs/freemaker-template-hello-world-tutorial/没关系。但我无法弄清楚为什么我会得到异常(exception)。有人可以帮我吗?

提前致谢!

最佳答案

通常 src 在运行时无法访问,因为它仅供编译器和其他构建工具使用。构建完成后,应用程序应该只依赖于构建的输出(“二进制文件”),即使在 IDE 中 src 仍然存在(与部署应用程序时不同)。

此外,您还没有显示您使用的TemplateLoader。你可能应该这样做:

cfg.setClassForTemplateLoading(SomeClassInMyApp.class, "/");

然后:

cfg.getTemplate("response.get.html.ftl");

创建子目录(例如 com/mycompany/myapp/templates)是一种更安全的做法,并将模板放在那里。在这种情况下,您需要这个:

cfg.setClassForTemplateLoading(SomeClassInMyApp.class, "/com/mycompany/myapp/templates");

请注意,cfg.getTemplate("response.get.html.ftl" 保持不变,因为您在此处指定相对于模板目录的路径。

关于java - 尝试获取 ftl 模板时未找到文件异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39919342/

相关文章:

java - 在 freemarker 模板中获取 contextPath 来链接其他 servlet

android - 将图像保存到本地存储/从本地存储加载图像

android - 在 Android 中从我的应用程序读取电子邮件附件文件时找不到文件异常

java - 性能:从 HashMap.values() 创建一个 ArrayList

java - ObjectInputStream readInt() 不起作用

java - 你好,如何改变球每次从墙上弹起时的颜色?

java - Freemarker:迭代哈希中的嵌套列表

java - 如何根据请求将内容从 Freemarker 发送到 java?

java - 即使存在 throws 语句,也会收到 FileNotFoundException

java - 尝试使用 onRestoreInstanceState 设置玩家回合时出现 Android 空指针异常