[Seasar-user:14059] Re: [Teeda] doOnceFinishでの二重サブミット防止の動きについて

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2008年 5月 1日 (木) 21:00:21 JST


小林 (koichik) です.

Date:    Thu, 1 May 2008 20:49:03 +0900
From:    "西山はじめ" <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:14058] Re: [Teeda] doOnceFinishでの二重サブミット防止の動きについて

> たった今見つけたのですが、doOnceを使用している画面と同じ画面に、ファイルダウンロードを行うサブミットが存在すると、
> 上手く動かないようです。
> 
> exampleのdownload/csvdownload.htmlに、doOnceHogeメソッドと、inputを追加。
> 
> 1.doDownloadでCSVファイルをダウンロード。
> 2.doOnceHogeボタンをクリック ← この段階で、DoubleSubmittedException が投げられます。

それが仕様通りですね.

doDownload もフォームをサブミットしているので,
その時点でトランザクショントークンはリセット
されます.

その後で doOnceHoge をクリックしても,すでに
トークンは無効であり,前にサブミットされたのは
doOnceHoge ではないため再表示することもできないので
例外になります.

doDownload と doOnceHoge の <form> を分けられるなら,
doDownload の <form> に

<input type="hidden" name="newwindow" value="true" />

を追加することで対応できるかもしれません.
# 試していませんが.

こういう話になってくると,Seam の Conversation
Scope っぽいのがあるといいのかもしれませんね.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



Seasar-user メーリングリストの案内