gpt4 book ai didi

java - CUBA-Platform + EmailInfo - 如何指定WEB-INF下的FTL模板路径?

转载 作者:行者123 更新时间:2023-11-30 06:34:58 27 4
gpt4 key购买 nike

我在modules/portal/web/WEB-INF/templates/email/(我创建的子文件夹)下有email.ftl。在我的 Controller 代码中,我有 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/ 开始,这让我相信路径的根目录从 Controller 所在模块的“src”文件夹开始(我的 Controller 位于应用程序门户中,因此在我的例子中,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”?

谢谢,明乐

==X-发布自 CUBA-Platform 论坛==

最佳答案

感谢 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 resourcesusing 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 并且成功了。

关于java - CUBA-Platform + EmailInfo - 如何指定WEB-INF下的FTL模板路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45363703/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com