GWTでのデータ管理について教えてください。旅行ポータル プロジェクトで Gwt を使用しており、Web ページは以前のページ データに関連付けられていますが、ブラウザの更新ボタンを押すとデータが失われます。この問題を管理する方法があれば教えてください。
4 に答える
URL フラグメントを作成して、データをエンコードできます。
文字列の場所 = "ny"; History.newItem("location="+location);
www.example.com#location=ny の URL フラグメントが生成されます
その後、ブラウザが更新されると、URL フラグメントをデコードして、場所が ny であると判断できます。
複数のパラメーターの場合、複雑なフラグメントを作成して解析できます。
History.newItem("start="+startLocation+"&end="+endLocation); URL は www.example.com#start=newyork&end=boston のようになります
GWT History クラスを使用してページの更新を管理することはできません (戻る/進むのみ)。
更新ボタンをクリックすると、リクエストがサーバーに送信され、アプリケーションの状態がサーバーから再ロードされます。それで全部です。あなたはそれに対処しなければなりません。
データを失いたくない場合は、必要なときにサーバーに保存する方法を見つける必要があります。
ユーザーが最新のブラウザーを使用している場合は、HTML5 機能の localStorage を使用して、ページの更新の間にデータをブラウザーに保存できます。
サポートされているブラウザについては、このスレッドを確認してください。
基本的な考え方は、 URL フラグメント(URL の # の後の部分) に状態を保存することです。たとえば、your-site.com/app#page-1
フラグメントへの変更をリッスンするには、GWT のHistory
クラスを使用します。ユーザーが前後に移動したり、ページを更新したりすると、フラグメントが変更されます。
そのため、URL に#page-1
vs#page-2
などがある場合に、アプリにさまざまなことをさせることができます。
これに対するより一般化されたスケーラブルなソリューションは、gwt-platformのPlaceアーキテクチャのようなものです (Presenter もあり、これは大規模なアプリにも適しています)。