1

このトピックは他の投稿に既に存在していますが、言及されている解決策はどれもうまくいきませんでした。誰かが私を正しい方向に向けてくれることを願っています。

基本的に、出力ストリームとして 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()}"

そうそう、私は迷っています。どんな助けでも本当に感謝しています。

ありがとう!

4

1 に答える 1

0

リンクのアクションの呼び出し中にリンクのターゲットを変更することはできません。手遅れです。

最善の策は、を除外し、代わりに目的の URLtarget="_blank"で JavaScript を呼び出すことです。window.open()PDF レポートをセッションに保存するか、URL の要求パラメーターを準備して、それらの要求パラメーターに基づいて目的の PDF レポートを生成できるようにすることができます。

于 2013-03-13T16:09:56.667 に答える