Primefaces 链接打开电子邮件撰写窗口

Posted

技术标签:

【中文标题】Primefaces 链接打开电子邮件撰写窗口【英文标题】:Primefaces link open an email compose window 【发布时间】:2012-02-04 02:12:18 【问题描述】:

使用 JSF-Primefaces 如何在 dataTable 列上为 emailId 创建链接,以便 onclick 将打开电子邮件撰写窗口? 我将 Primefaces.3.0.M3 与 JSF2 一起使用。

【问题讨论】:

【参考方案1】:

坏消息是 JSF 标记 h:outputLink 将主题和正文转义为查询参数,将空格替换为 + 而不是 %20

好消息是您可以使用java.net.URI 类获得正确的结果:

java.net.URI uri = new java.net.URI("mailto", "your@email.com", "subject=Some subject&body=Some body"); 
String result = "mailto:?" + uri.getRawFragment();
assert result.equals("mailto:?subject=Some%20subject&body=Some%20body");

请注意,构造函数中的前两个参数是不相关的。

您可以在 JSF/Primefaces 标记的href 属性中使用result,例如h:outputLinkp:button,它会打开带有预定义主题和正文的默认电子邮件客户端以及收件人地址为空。

【讨论】:

【参考方案2】:

使用 html 标准 mailto: link syntax。您只需要确保生成的 HTML 链接最终看起来像

<a href="mailto:john.doe@example.com?subject=Some%20subject&amp;body=Some%20body">mail</a>

这可以在JSF中通过例如实现

<h:outputLink value="mailto:#user.email">
    <f:param name="subject" value="Some subject" />
    <f:param name="body" value="Some body" />
    <h:outputText value="mail" />
</h:outputLink>

这些链接将打开客户端的默认邮件撰写编辑器。 subjectbody 参数是可选的,允许您在电子邮件编辑器中设置默认主题和正文。

【讨论】:

通过使用 JSF 方法,它转义了我的主题和正文:分别为 Some+subjectSome+body。无论如何要解决这个问题(这将是一个更优雅的解决方案)? 同样的问题,没有解决办法。 那么就按“”键吧?

以上是关于Primefaces 链接打开电子邮件撰写窗口的主要内容,如果未能解决你的问题,请参考以下文章

打开WPS版电子表格就弹出此工作薄包含其他数据源链接,是不是更新这些链接?

在 Gmail 中撰写邮件的 URL(具有完整的 Gmail 界面并指定收件人、密件抄送、主题等)

Gmail、Yahoo Mail、Hotmail 和 AOL 等 Web 邮件客户端的撰写链接格式是啥?

如何以编程方式在 Apple Watch 上撰写电子邮件?

通过电子邮件共享模态窗口

primefaces中的多个图像上传