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

时间:2012-01-06 10:18:02

标签: java javascript jsf-2 datatable primefaces

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

2 个答案:

答案 0 :(得分:15)

使用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参数是可选的,您可以在电子邮件编辑器中设置默认主题和正文。

答案 1 :(得分:2)

坏消息是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标记的result属性中的href,例如h:outputLinkp:button,它会打开默认的电子邮件客户端预先定义的主题和正文以及空的收件人地址。