CUBA-平台 + 电子邮件信息 - 如何在 WEB-INF 下指定 FTL 模板路径?



我在modules/portal/web/WEB-INF/templates/email/(我创建的子文件夹(下有email.ftl。在我的控制器代码中,我有我的 EmailInfo 声明,我想指定 email.ftl 的路径。

查看本教程,我看到 EmailInfo 声明是这样的:

EmailInfo emailInfo = new EmailInfo(
"john.doe@company.com,jane.roe@company.com", 
newsItem.getCaption(),
null,
"com/company/demo/templates/news_item.txt",
Collections.singletonMap("newsItem", newsItem)
);

我注意到通向news_item.txt的相对路径从com/开始,这让我相信路径的根是从控制器所在模块的"src"文件夹开始的(我的控制器在应用程序门户中,所以在我的情况下,portal/src(。由于我的模板在web/而不是src/下,我指定了我的路径:

EmailInfo emailInfo = new EmailInfo("email@email.com", "Email Template", null, "../web/WEB-INF/templates/email/email.ftl", null, null);[/pre]

但是,它不起作用,因为抛出了一个错误:

java.lang.IllegalArgumentException: 无法按路径找到模板: ../web/WEB-INF/templates/email/email.ftl

所以我的问题是,如何指定此文件路径以转到不同的子文件夹下,特别是"模块/门户/网络"?

谢谢,明格尔

==X-发布自CUBA平台论坛==

感谢 CUBA-Platform 上的 Yuriy Artamonov 回答:

不幸的是,您无法将电子邮件模板存储在门户/Web 模块中,因为它们是在中间件上处理的。我建议你把它们放到核心模块src文件夹中。实际上,"/"表示类路径根目录,而不是文件夹。

模板由电子邮件使用加载资源接口加载 使用以下规则:https://doc.cuba-platform.com/manual-6.5/resources.html

我把email.ftl放在modules/core/src/com/example/test/email/email.ftl下,并指定了/com/example/test/email/email.ftl的路径,它奏效了。

最新更新