1

Wicket のページのバージョン管理が何に役立つのか、誰か説明してもらえますか? このトピックに関連するFAQの記事があります。

Wicket は、ブラウザーの戻るボタンをサポートするためにページのバージョンを保存します。

ListItems にリンクを含むページング ListView があり、クリックスルーして項目の 3 ページ目を表示したとします。3 番目のページで、リンクをクリックしてそのアイテムの詳細ページを表示します。現在、サーバーで現在利用可能な状態は、リンクをクリックしたときに 3 ページにいたということです。次に、ブラウザーの戻るボタンを 2 回クリックします (つまり、リスト ページ 3 に戻り、次にリスト ページ 2 に戻りますが、すべてブラウザー内にあります)。2 ページ目にいる間、サーバーの状態は 3 ページ目です。バージョニングがなければ、2 ページ目の ListItem リンクをクリックすると、実際には 3 ページ目の項目の詳細ページに移動します。

しかし、残念ながら私にはまったく理解できません。2 ページ目の ListItem をクリックすると、そのリンクで定義されたページ (アイテムの詳細ページ) に移動するはずです。3 ページ目のアイテムの詳細ページに移動する必要があるのはなぜですか?

さらに、ブラウザで戻るボタンを押すと、サーバーはまったく呼び出されません。そうですか?

では、このバージョン管理はどのように機能するのでしょうか?

4

1 に答える 1

3

いいえ、戻るボタンを押してもサーバーには通知されません。例で何が起こるかを説明しようとします:

  • アプリケーションに初めてアクセスします。サーバーでは、ページの「リスト」が作成され、ブラウザーに表示される HTML をレンダリングするために使用され、ページ v1 として保存されます。リストの最初の 10 項目が表示されます。

  • 「次へ」リンクをクリックすると、ページ v1 のリンクが参照されます。サーバーでは、ページ v1 が読み込まれ、(ページネーションを進めるために) リンク ロジックが実行され、ページが HTML のレンダリングに使用され、ページ v2 として保存されます。11 から 20 までのアイテムが表示されます。

  • 「次へ」リンクをクリックすると、ページ v2 のリンクが参照されます。サーバーでは、ページ v2 が読み込まれ、(ページネーションを進めるために) リンク ロジックが実行され、ページが HTML のレンダリングに使用され、ページ v3 として保存されます。21 から 30 までのアイテムが表示されます。

  • アイテム 25 の「詳細」リンクをクリックすると、ページ v3 の 5 番目のアイテムのリンクが参照されます (このページには 10 個のアイテムしか表示されず、リンクは完全なリストの 25 番目のアイテムを参照していても、このページはちょうど 5 番目です)。サーバーでは、ページ v3 がロードされ、そのロジックが実行され、ページ「詳細」が作成され、ページ v4 として保存され、そこにリダイレクトされます。ブラウザがページ v4 を要求すると、サーバーがそれをロードし、それを使用して HTML ページをレンダリングします (レンダリングだけなので、新しいバージョンは保存されません)。アイテム 25 の詳細が表示されます。

  • ブラウザの「戻る」ボタンを 2 回クリックすると、ページ v2 (リスト) を参照して、項目 11 から 20 を示すページ「リスト」が表示されます。次に、項目 13 のリンク「詳細」をクリックします。サーバーでは、クリックされたリンクがこのページ バージョンを指しているため、ページv2が読み込まれます (最後に実行された v4 ではありません)。次に、3 番目のアイテム リンクのロジックが実行され、新しいページ 'details' が作成され、ページv5として保存され、そこにリダイレクトされます。ブラウザーはページ v5 を要求し、サーバーはそれを読み込み、それを使用して HTML をレンダリングします。アイテム 3 の詳細が表示されます。

Struts のようなバックグラウンドを持っている場合、これはすべて奇妙に思えるかもしれません。Struts のようなバックグラウンドでは、アイテム ID または表示するページをリンク パラメータとして常に入力するだけです。Wicket では、通常、すべての状態をサーバーに保存し、ナビゲーションはクライアント (パラメーターを渡す別のページへの直接リンク) ではなく、サーバーで行います。リンクは、ページ オブジェクト バージョンでコードを実行するようにサーバーに要求するだけで、ナビゲーションはすべてサーバー側で行われます。

Struts スタイルの方が単純であると主張することもできます (Wicket でも実行できますが、これは最適ではありません) が、サーバーでのみ状態を維持することには多くの利点があります。こぶし、慣れてしまえば、実はずっと簡単です。すべてのパラメーターをページネーション リンクに追加する必要はありません (検索パラメーター、最初の項目、ページの長さ、並べ替え列、順序の方向など)。また、多くのセキュリティ問題を回避し (URL id パラメータを任意の値に変更して他のユーザーのデータにアクセスすることはできません)、Java-Javascript を混在させる代わりに Java コードからすべてを制御できます (ただし、必要です)。

于 2013-06-12T17:58:30.263 に答える