这个话题已经出现在其他帖子中,但没有提到的解决方案对我有用,所以我在这里,希望有人能指出我正确的方向。
基本上,我有一个带有 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()}"
所以,是的,我迷路了。非常感谢任何帮助。
谢谢!