ボタンをクリックすると、バッキング Bean のメソッドが呼び出され、Excel ファイルが返されます。コマンドボタンはダイアログ内にありますが、影響はないと思います。
問題は、このボタンがリクエストを生成していないように見えることです.少なくともfirebugはそれを表示しませんが、サーバーからExcelファイルを取得します.リクエストがなければ意味がありません.
<h:commandButton id="downloadButton" value="Download" action="#{bean.downloadExcel}"/>
<p:commandButton id="downloadButton" value="Download" action="#{bean.downloadExcel}" ajax="false" onsuccess="confirmDialogWv.close();"/>
両方のボタンを同時に使用することはありません。両方でテストしたところ、同じ結果が得られました。
「すべてが正常に機能している」場合の問題は何ですか? リクエストがない場合、onsuccess イベントでダイアログを閉じることができません。
誰かが以前にこの問題に直面したことがありますか? 説明はありますか?
よろしくお願いします。
編集:
<h:form id="contentForm" prependId="false" >
<!-- lot of code -->
<p:dialog id="confirmDialog"
modal="true"
closable="false"
widgetVar="confirmDialogWv"
resizable="false"
header="Confirm">
<p:commandButton id="downloadButton" value="Download" action="#{bean.downloadExcel}" ajax="false" onsuccess="confirmDialogWv.close();"/>
<p:commandButton id="openHtmlButton" value="Open HTML" process="@form" update="@form" actionListener="#{bean.openHtml}"/>
</p:dialog>
</h:form>
2 番目のボタンは新しいウィンドウを開き、適切に機能します。
アップデート:
すでに述べたように、firebug はリクエストを表示しませんが、現在 IE と Chrome でテストしています。
Chrome: リクエストを表示しますが、ブラウザで Excel ファイルを取得すると、リクエストのステータスが「キャンセル」になります。
IE9: リクエストを表示してコード 200 を返しますが、onsuccess イベントはトリガーされません。