最近POI4XPAGESを使うようになって、この問題に遭遇しました。
同じ問題に遭遇する人もいるかもしれないので、メモを残しておこう。
ブラウザのF12ツールを使ってブラウザの通信をモニタしてみると、以下のようになってました。
・Excelの出力をさせるボタン押下時にPOSTメソッドでサーバにボタンが押下されたことを通知
・SSJSでPOI4XPagesのExcel出力処理を実行。ただしブラウザのPOSTの応答はない
・ブラウザ側はPOSTの応答を待ってるが、その間は再度ボタンを押下しても何も起きない
・そのうちPOST応答待ちのタイムアウトが起きて、ボタンが押せるようになる
ということで海老原さんの予想とおりだと思います。
POSTの応答が返せればいいんですけど、それは難しそうだから、CSJSでページ遷移させてしまうのがいいかと思います。
ページのリロードでいいなら、ファイル出力の処理を以下のように書けばうまくいきます。
<xp:button value="get Excel-File" id="btExport">
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete">
<xp:this.action>
<wgpoi:generateWorkbook
workbookId="shContacts">
</wgpoi:generateWorkbook>
</xp:this.action>
<xp:this.script><![CDATA[
setTimeout("location.reload()",3000);
]]></xp:this.script>
</xp:eventHandler>
</xp:button>
/Yac