Double Form Submit対策
JSFでのサーバサイドでの二重送信対策を世の中の人はどうやっているか調べてみる。
PhaseListener使って、RestoreViewフェーズ前でチェックする方法。
チェックはURL単位でやってますね。
(URL単位で本当に良いのかな・・・)
Forum情報。
リクエストID(時刻)をhiddenで埋めこんでチェックしている。
Shaleの
hiddenでTokenを埋め込んでいるんだろうだけど、これ書くだけでいいのかな?チェックはどのタイミングでやっているんだろう。
また、Formに書くということはチェックはフォーム単位なのかなあ。
Teeda/gettingStarted - SeasarWiki
Teedaの実装。以下のようにdoOnceと書けばトークンが発行されるらしい。
input type="submit" id="doOnceHoge" value="commit"/>
ソースをちょっと見てみたけど、UIComponentのbroadcastでチェックしている模様。
(おまけ)
Strutsの場合だけど、synchronized actionという
より強固?な実装例がある。後で読んどこう。
http://www.javaworld.com/javaworld/javatips/jw-javatip136.html?