Javascript 将表单目标更改为带有primefaces和oncomplete的空白

Javascript 将表单目标更改为带有primefaces和oncomplete的空白,javascript,forms,jsf,primefaces,Javascript,Forms,Jsf,Primefaces,这个主题已经出现在其他帖子中,但是没有一个解决方案对我有效,所以我在这里,希望有人能给我指出正确的方向 基本上,我有一个带有Primefaces 3.5的应用程序,它有两个commandButtons,可以执行backingbean方法以生成两个不同的报告作为输出流(没有可用的GET)。其中一个报告作为附件生成,而另一个报告应显示在另一个选项卡中。两者的形式相同 我的问题来自于在一个单独的选项卡中生成的报告:由于报告共享同一个表单,我不能在表单定义中使用target=blank,并且由于我必须在

这个主题已经出现在其他帖子中,但是没有一个解决方案对我有效,所以我在这里,希望有人能给我指出正确的方向

基本上,我有一个带有Primefaces 3.5的应用程序,它有两个commandButtons,可以执行backingbean方法以生成两个不同的报告作为输出流(没有可用的GET)。其中一个报告作为附件生成,而另一个报告应显示在另一个选项卡中。两者的形式相同

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

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

function test() {
    document.getElementById("formRep3_1").target = '_blank';
}
被豆子叫着

RequestContext.getCurrentInstance().execute("test()");
验证成功后。但它不起作用

我还尝试在report按钮上设置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');
    }
    }
所以是的,我迷路了。非常感谢您的帮助


谢谢

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


最好的办法是不使用
target=“\u blank”
,而是在所需URL上调用JavaScript
窗口。open()
。您可以将PDF报告存储在会话中,或者为URL准备请求参数,以便它可以根据这些请求参数生成所需的PDF报告。

您可以修复代码格式吗?这是AJAX请求吗?如果这是AJAX请求,则不能使用
\u blank
打开新窗口/选项卡。您必须在
onsuccess
中手动打开新窗口。我还尝试了在我的命令按钮中使用onsuccess,这样我就可以打开一个新选项卡……但是如果验证失败,新选项卡仍然会打开,错误消息会显示在第一页。在这种情况下,我是否必须在代码中设置一些东西来避免触发onSuccess?谢谢
oncomplete="if (!args.validationFailed){test()}"