【发布时间】:2012-02-04 02:12:18
【问题描述】:
使用 JSF-Primefaces 如何在 dataTable 列上为 emailId 创建链接,以便 onclick 将打开电子邮件撰写窗口? 我将 Primefaces.3.0.M3 与 JSF2 一起使用。
【问题讨论】:
标签: java javascript jsf-2 datatable primefaces
使用 JSF-Primefaces 如何在 dataTable 列上为 emailId 创建链接,以便 onclick 将打开电子邮件撰写窗口? 我将 Primefaces.3.0.M3 与 JSF2 一起使用。
【问题讨论】:
标签: java javascript jsf-2 datatable primefaces
坏消息是 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:outputLink 或p:button,它会打开带有预定义主题和正文的默认电子邮件客户端以及收件人地址为空。
【讨论】:
使用 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 参数是可选的,允许您在电子邮件编辑器中设置默认主题和正文。
【讨论】:
Some+subject 和 Some+body。无论如何要解决这个问题(这将是一个更优雅的解决方案)?