【问题标题】:Using Freemarker templates and the JSF 2.x resources folder for media使用 Freemarker 模板和 JSF 2.x 媒体资源文件夹
【发布时间】:2012-08-20 07:50:28
【问题描述】:

我有一个使用 Freemarker 模板发送电子邮件的 JSF 2.x 应用程序。

我的问题最好描述如下:

  • 在我的 Freemarker 模板中,我指的是托管在 JSF 网站上的媒体/图像;
  • 我的资源位于“jsf2.xresources 文件夹中;
  • 当然,我不能使用 Freemarker 模板中的 <h:graphicImage library="images" name="logo.gif" ... 语法...

有人有解决办法吗?

我应该将图像附加到电子邮件中吗?

或者我应该为我的图像/媒体使用两个位置(一个公共位置,另一个在 resources 文件夹下)?

【问题讨论】:

    标签: jsf-2 resources html-email freemarker template-engine


    【解决方案1】:

    这里好像有一些不相关的问题。

    一个问题是附加图像 VS 通过电子邮件中的 URL 引用它们。我不认为这是决定的,这取决于很多事情。我说,如果图像不仅仅是装饰,而是收件人想要保留在他的邮件存档中的东西(如图表),嵌入是唯一的方法,除非您可以保证图像 URL 在数月或数年后仍然有效.如果它只是装饰......那很棘手。上次我检查时,邮件客户端默认阻止从 URL 加载图像。用户必须点击它们或其他东西才能加载它们,但也许他们可以永久启用来自发件人的图像。但是如果图像不重要,大多数用户就不会关心,也永远不会看到它们。附加图片在这方面更加防弹,但它增加了邮件的大小(不太礼貌),并增加了误报垃圾邮件的可能性(垃圾邮件发送者经常使用图片作为文本)。

    另一个问题是与 JSF/FreeMarker 相关的问题。我不知道 JSF ......但除非它是一个可怕的设计,否则它必须有 Java API-s 通过它你可以获取资源 URL(如果你想在邮件中引用它),或者阅读资源(如果您想将其附加到邮件中)。然后从 FreeMarker 模板中,您可以调用已放入数据模型的对象的 Java 方法,因此您可以添加一些帮助对象,FreeMarker 可以从中获取 URL 或 base64 编码的内容。 (如果您不能/不想添加到数据模型中,您仍然可以创建 TemplateDirectiveModelTemplateMethodModelEx 实现并像 <#assign resourceContentB64 = 'com.example.ResourceContentB64Directive'?new()> 一样将它们拉入。)

    【讨论】:

      猜你喜欢
      • 2019-11-19
      • 2012-03-27
      • 2017-10-25
      • 2012-11-01
      • 2013-01-23
      • 1970-01-01
      • 2014-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多