1

email.ftl在 modules/portal/web/WEB-INF/templates/email/ 下(我创建的一个子文件夹)。在我的控制器代码中,我有我的 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”文件夹开始(我的控制器在 app-portal 中,所以在我的情况下, portal/src)。由于我的模板是 underweb/而不是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

所以我的问题是,如何指定这个文件路径去不同的子文件夹,特别是“modules/portal/web”?

谢谢,明乐

==X-从 CUBA-Platform 论坛发帖==

4

1 回答 1

1

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

不幸的是,您不能将电子邮件模板存储在门户/网络模块中,因为它们是在中间件上处理的。我建议您将它们放入核心模块 src 文件夹中。实际上,“/”表示 CLASS-PATH 根目录,而不是文件夹。

模板由 Emailer 使用 Resources 接口加载,该接口使用以下规则加载资源: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并且它起作用了。

于 2017-07-28T13:48:09.730 回答