二重サブミットについて

> この画面には新規(doOnceNew)やファイルダウンロード(doCsvdownload)などボタンがあります。
> 1、doCsvdownloadボタンをクリックして、CSVファイルをダウンロード。
> 2、doOnceNew/別のボタンをクリックすると、DoubleSubmittedException が投げられます。
> 解決法を教えてください。

doCsvdownload のように画面を描画しない (HTML を
返さない) ものは以下のようにしてください.

・別の <form> にする.
・パラメータに newwindow=true を指定する.
・doOnce にしない

<form id="form">
  ...
  <input type-"submit" id="doOnceNew" />
</form>
<form id="CsvForm">
  <input type="hidden" name="newwindow" value="true" />
  ...
  <input type="submit" id="doCsvdownload" />
</form>

>   ただし、少し複雑な一覧画面(おおくのボタンと別の処理)には、<form> を分ければ、本当にとても大変ですね.
>   この場合には、どうな…

CVS ダウンロードの <form> を非表示にして,
メインの <form> に置いたボタンが押されたら
JavaScript で form.submit() してください.

<script type="text/javascript">
function csvDowonload() {
  var csvForm = document.getElementById('csvForm');
  //必要に応じて form から input の内容をコピー
  csvForm.submit();
}
</script>

<form id="form">
  ...
  <input type-"submit" id="doOnceNew" />
  <input type="button" value="CVS" onclick="csvDownload()" /><!-- id 付けない -->
</form>
<form id="csvForm" style="display:none">
  <input type="hidden" name="newwindow" value="true" />
  ...
  <input type="submit" id="doCsvdownload" />
</form>