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

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

【问题讨论】:

    标签: java javascript jsf-2 datatable primefaces


    【解决方案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。无论如何要解决这个问题(这将是一个更优雅的解决方案)?
      • 同样的问题,没有解决办法。
      • 那么就按“”键吧?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-29
      相关资源
      最近更新 更多