CUBA-Platform + EmailInfo - 如何在WEB-INF下指定FTL模板路径?
CUBA-Platform + EmailInfo - How to specify FTL template path under WEB-INF?
我在 modules/portal/web/WEB-INF/templates/email/(我创建的子文件夹)下有 email.ftl
。在我的控制器代码中,我有我的 EmailInfo 声明,我想指定 email.ftl.
的路径
查看 this tutorial,我看到 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: Could not find template by path: ../web/WEB-INF/templates/email/email.ftl
所以我的问题是,如何将此文件路径指定到不同的子文件夹下,特别是 "modules/portal/web"?
谢谢,Mingle
==来自 CUBA 平台论坛的 X 帖子==
感谢 CUBA-Platform 上的 Yuriy Artamonov 的回答:
Unfortunately, you cannot store email templates in portal / web modules, since they are processed on a middleware. I recommend that you put them into core module src folder. In fact, "/" means CLASS-PATH root, not the folder.
Templates are loaded by Emailer using Resources interface which loads resources
using the following rules: 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
的路径,成功了。
我在 modules/portal/web/WEB-INF/templates/email/(我创建的子文件夹)下有 email.ftl
。在我的控制器代码中,我有我的 EmailInfo 声明,我想指定 email.ftl.
查看 this tutorial,我看到 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: Could not find template by path: ../web/WEB-INF/templates/email/email.ftl
所以我的问题是,如何将此文件路径指定到不同的子文件夹下,特别是 "modules/portal/web"?
谢谢,Mingle
==来自 CUBA 平台论坛的 X 帖子==
感谢 CUBA-Platform 上的 Yuriy Artamonov 的回答:
Unfortunately, you cannot store email templates in portal / web modules, since they are processed on a middleware. I recommend that you put them into core module src folder. In fact, "/" means CLASS-PATH root, not the folder.
Templates are loaded by Emailer using Resources interface which loads resources using the following rules: 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
的路径,成功了。