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

Primefaces link open an email compose window

本文关键字:电子邮件 一个 窗口 链接 Primefaces      更新时间:2023-09-26

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

使用HTML标准mailto:链接语法。您只需要确保生成的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标记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,它打开具有预定义主题和正文以及空收件人地址的默认电子邮件客户端。