使用JSF-Primefaces如何在emailId的dataTable列上建立链接,以便onclick将打开电子邮件撰写窗口? 我正在使用Primefaces.3.0.M3和JSF2。
答案 0 :(得分:15)
使用HTML标准mailto:
link syntax。您只需要确保生成的HTML链接最终看起来像
<a href="mailto:john.doe@example.com?subject=Some%20subject&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>
这些链接将打开客户端的默认邮件撰写编辑器。 subject
和body
参数是可选的,您可以在电子邮件编辑器中设置默认主题和正文。
答案 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:outputLink
或p:button
,它会打开默认的电子邮件客户端预先定义的主题和正文以及空的收件人地址。