このトピックは他の投稿に既に存在していますが、言及されている解決策はどれもうまくいきませんでした。誰かが私を正しい方向に向けてくれることを願っています。
基本的に、出力ストリームとして 2 つの異なるレポートを生成するためにバッキング Bean メソッドを実行する 2 つの commandButtons を備えた Primefaces 3.5 を使用したアプリケーションがあります (GET は使用できません)。このレポートの 1 つは添付ファイルとして生成され、もう 1 つは別のタブに表示されます。どちらも同じ形です。
別のタブで生成されたレポートに問題があります。レポートは同じフォームを共有するため、フォーム定義で 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()}"
そうそう、私は迷っています。どんな助けでも本当に感謝しています。
ありがとう!