如何将基于时间戳的动态参数传递给h:outputLink中的URL?

问题描述:

我需要从我的JSF页面调用第三方应用程序,它将返回一个HTML内容。 HTML内容将显示在弹出窗口中。如何将基于时间戳的动态参数传递给h:outputLink中的URL?

第三方URL是一种基于当前unix时间戳的期望密钥的GET服务。因此,只有当用户点击超链接时,我才能生成完整的请求URL,否则密钥已经无效(密钥仅在5分钟内有效)

我尝试了下面的选项,但在这种情况下密钥已生成当页面呈现时,如果用户在5分钟后点击超链接,链接无效。

此外,由于这是身份验证密钥生成过程,因为安全原因,我不想在javascript中执行此操作。

<h:outputLink onclick="window.open('#{testMBean.thirdpartylink}','ThirdParty','menubar=no, status=no, scrollbars=yes, resizable=yes, toolbar=no, location=yes'); return false; "> 
link number 
</h:outputLink> 

我想这为好,但其相同的行为

<h:outputLink onclick="#{indexBean.JSPopup()}">#{indexBean.linkName}</h:outputLink> 

public String JSPopup() { 
    return "javascript:void window.open('" + getRedirectLink() + "','" + linkName + "','width=700,height=500,toolbar=0,menubar=0,location=0,status=0,scrollbars=0,resizable=1,left=0,top=0');return false;"; 
} 

能否请您提供一些投入,这可怎么实现的?

这将调用一个实际生成的URL:

<h:panelGroup id="linkBlk"> 
     <script type="text/javascript"> 
      function openIt() { 
       var url='#{indexBean.theLink}'; 
       window.open(url); 
      } 
     </script> 
    </h:panelGroup> 
    <p:commandButton value="get PopUp" ajax="true" partialSubmit="true" process="@this" update="linkBlk" actionListener="#{indexBean.buildLink()}" oncomplete="openIt()"/> 
+0

感谢您的输入,我会尝试这种方法。 – coder