1

这个话题已经出现在其他帖子中,但没有提到的解决方案对我有用,所以我在这里,希望有人能指出我正确的方向。

基本上,我有一个带有 Primefaces 3.5 的应用程序,带有 2 个命令按钮,它们执行支持 bean 方法以生成两个不同的报告作为输出流(没有可用的 GET)。此报告之一作为附件生成,而另一个应显示在另一个选项卡中。两者形式相同。

我的问题来自在单独的选项卡中生成的报告:由于报告共享相同的表单,我不能在表单定义中使用 target=blank 并且由于我必须在我的支持 bean 中进行验证,我必须在主选项卡,仅在一切顺利的情况下打开新选项卡。

我在表单页面中尝试了以下js:

function test() {
    document.getElementById("formRep3_1").target = '_blank';
}

由 bean 调用

RequestContext.getCurrentInstance().execute("test()");

验证成功后。但它不起作用。

我还尝试在报告按钮上设置一个 oncomplete="test()",稍微修改一下 js,如下所示:

function test() {
    var v = '<h:outputText value="#{repReqStatus.resultCheck}" />';
    if (v.value == "success") {
        document.getElementById("formRep3_1").target = '_blank';
    }
    else {
        alert('no');
    }
    }

但似乎 oncomplete 根本没有被调用!即使我再做一次检查也不会

oncomplete="if (!args.validationFailed){test()}"

所以,是的,我迷路了。非常感谢任何帮助。

谢谢!

4

1 回答 1

0

在调用链接的操作期间,您不能更改链接的目标。太晚了。

最好的办法是避开,而是在所需的 URL 上target="_blank"调用 JavaScript 。window.open()您可以将 PDF 报告存储在会话中,或者为 URL 准备请求参数,以便它可以根据这些请求参数生成所需的 PDF 报告。

于 2013-03-13T16:09:56.667 回答