使用primefaces和oncomplete将表单目标更改为_blank

时间:2013-03-06 23:22:43

标签: javascript forms jsf primefaces

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

基本上,我有一个带有2个commandButtons的Primefaces 3.5的应用程序,它们执行支持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()}"

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

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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