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的路径,成功了。