【问题标题】:How to pass timestamp based dynamic parameter to a URL in h:outputLink?如何将基于时间戳的动态参数传递给 h:outputLink 中的 URL?
【发布时间】:2017-07-25 18:49:57
【问题描述】:

我需要从我的 JSF 页面调用第三方应用程序,这将返回一个 HTML 内容。 HTML 内容随后将显示在弹出窗口中。

第三方 URL 是一个 GET 服务,它需要一个基于当前 unix 时间戳的密钥。所以我只能在用户点击超链接时生成完整的请求 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;";
}

您能否提供一些意见,这是如何实现的?

【问题讨论】:

    标签: jsf primefaces jsf-2


    【解决方案1】:

    这将调用一个实际生成的 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()"/>
    

    【讨论】:

    • 感谢您的意见,我会尝试这种方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 2018-08-13
    相关资源
    最近更新 更多