我有一个Web应用程序,我需要手动获取Freemarker模板 - 模板是通过库项目中的类获得的,但实际的tpl文件包含在Web应用程序类路径中.因此,有2个项目,一个是"taac-backend-api",另一个是"taac-web"; taac-backend-api有代码来获取模板并对其进行处理,但是taac-web是模板存储的地方(具体在:WEB-INF/classes/email/vendor.tpl) - 我尝试过使用的所有内容使用Freemarkers setClassForTemplateLoading方法弹出classpath资源.我认为这会奏效:
freemarkerConfiguration = new Configuration();
freemarkerConfiguration.setClassForTemplateLoading(this.getClass(), "");
Template freemarkerTemplate = freemarkerConfiguration.getTemplate("/email/vendor.tpl");
Run Code Online (Sandbox Code Playgroud)
但是,我总是得到一个FileNotFoundException.有人可以解释从类路径获取模板的最佳方法吗?
谢谢.
我一直在使用FreeMarker一段时间,但有一个明显的功能要么丢失,要么我想不出来(我希望后者!).如果你传递cfg.getTemplate()一个绝对路径,它就行不通.我知道你可以指定一个模板目录,但我负担不起,我的用例可以处理任何目录中的文件.有没有办法设置FreeMarker以任何用户期望的方式呈现绝对路径?