0

当社のユーザーは、外部サイトから当社の Web サイトに戻り、ユーザーが当社のサイトを離れたときに外部サイトに渡される URL に戻ります。私たちのサイトに戻るには、アプリケーションのデータストアに保持されるステータスの更新が必要です。

Web サイトに戻ったときにチェックを実装しました。これにより、データストアへの複数の書き込みが防止され、操作が冪等になります。

イベントの一般的な順序は次のとおりです。

  1. ランディング Web ページへの最初の投稿 (Web ページ インスタンス 1 が構築中)
  2. 最初の投稿はチェックを通過します (データは前に処理されていません)
  3. データ永続化の開始 (まだ Web ページ コンストラクター内)
  4. 最初の投稿と同じセッションとブラウザー ウィンドウにある、ランディング Web ページ (Web ページ インスタンス 2 が構築中) への 2 番目の投稿
  5. 2 番目の投稿がチェックに失敗しました (データは既に処理されているか、処理されています)
  6. Web ページ インスタンス 2 コンストラクターが完了し (データストアへの永続性なし)、Web 応答がユーザーに提供されます。
  7. Web ページ インスタンス 1 コンストラクターの完了 (データストアに永続化した後)
  8. ユーザーのブラウザにはページ インスタンス 1 が表示されません。

最終結果として、最初の投稿の後に 2 番目の投稿が行われたとしても、2 番目の投稿はユーザーに対してより速く "完了" し、ユーザーの Web ブラウザーにはページのインスタンス 1 ではなくインスタンス 2 が表示されます。

私の質問は次のとおりです。

  • 最初のデータストア処理ページ インスタンスをユーザーに表示する (したがって、2 番目のページ インスタンスを "破棄" する) 方法はありますか?
  • もしそうなら、これはAJAXを使わずに行うことができますか?

ご支援いただければ幸いです。

私の開発環境

  • Web フレームワーク: Wicket 1.5.7
  • Java: 1.6.0_33; Java HotSpot(TM) クライアント VM 20.8-b03
  • Web サーバー システム: Google App Engine for Java バージョン 1.6.6
  • オペレーティング システム: Microsoft Windows XP Home Edition バージョン 2002 SP3 (x86 で動作するバージョン 5.1; Cp1252; en_GB)
  • IDE: NetBeans IDE 7.1.2 (ビルド 201204101705)
4

1 に答える 1

0

最初のヒントをくれた @svenmeier に感謝します。私の解決策はこのアプローチに従います。@Carl-EricMenzel のリダイレクトの提案に従う代わりに、必要に応じてページ インスタンス 2 を繰り返し待機させることにしました。

私の質問に記載されているイベントの順序を参照すると、ステップ 6 は次のように置き換えられます。

6.1 データがすでに処理されている場合、ページ インスタンス 2 は、各待機後にチェックしながら繰り返し待機します。

6.2 すべての待機の後、ページ インスタンス 1 はステップ 7 (および 8) を完了します。そうでない場合は、ページ インスタンス 2 の構築が完了します。

6.3 インスタンス 1 のデータ処理が成功した場合、ページ インスタンス 2 はユーザーに成功を示します。

6.4 インスタンス 1 のデータ処理が失敗した場合、ページ インスタンス 2 がデータを処理し、結果 (成功/失敗) をユーザーに表示します。

于 2012-07-05T11:02:47.720 に答える