- - PR -
(struts)TransactionTokenを用いた場合のエラー専用ページからの戻り方について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-03-09 20:01
まず、アプリケーションの構成を記します。
・TransactionTokenを使ってsubmitボタンの2重押しを抑制しています。 ・submit後、入力内容にエラーがあった場合はエラー内容を表示するエラー専用ページに遷移するようにしています。 ・エラー専用ページはあらゆる画面で汎用的に用いているので再び入力画面に戻るにはjavascript:history.back()を利用しています。 この後に問題があります。入力内容を修正して再びsubmitボタンを押すと当たり前のようですが、TransactionTokenにより、2重押しと判断されてしまいます。 試しにエラー専用ページに遷移後、リクエストに存在するトークンパラメータを<bean:parameter>で取得して戻るボタンのクエリにセットしたのですが、 これも当たり前ですが戻るボタンはjavascriptで戻るので入力画面に戻れてもsessionスコープにはクエリ送信されません。 何とかして、2重押しの抑制と汎用エラーページを共存させたいのですが、他に良い方法はないでしょうか? |
|
投稿日時: 2006-03-09 21:40
history.back()で戻ってまともな動きをするのは諦めた方がいいかと。
TransactionTokenの意味が無くなっちゃいますよ? というか、共通エラーページから戻る意味があるのであれば、エラーページに 飛ばすのではなく、元の画面に戻って再試行できるのが普通の設計でしょう。 回復できる見込みもないからエラーページを表示しなきゃいけないわけで。 |
|
投稿日時: 2006-03-10 11:44
あしゅさん、ご指摘ありがとうございます。
確かに仰る通り、エラーページの設け方が 一般的ではなかったようですね。改めて画面遷移設計を見直してみます。 ちなみにToransactionTokenを用いた本来の目的はsubmitボタンの2重押し対策です。 エラーページの遷移を見直しても2重押し対策は必要です。 何か良い方法はないでしょうか? |
|
投稿日時: 2006-03-10 13:13
Struts ではエラーメッセージをリクエストに積んでおいて、元のフォーム画面に表示させることができますね。
このとき新しいトークンを発行しておけば良いかと。 サンプルを参考にすると良いです。 |
1