ここで GWT の歴史に関するドキュメントを読む必要があります。
あなたの場合の例として、ユーザーがどのタブにいるのか (パラメーター t) と、ユーザーが検索したクエリ (パラメーター q) を覚えておきたいとしましょう。次のようなURLを入力します
t=2&q=こんにちは
次に、GWT モジュールがロードされているとき。URL をチェックして、これらのパラメータがここにあるかどうかを確認してください。はいの場合は、それらを解析して正しいタブをロードし、検索します。そうでない場合は、最初からロードします。サンプル理論コード:
private int selectedTab;
private String query;
public void onModuleLoad() {
String token = History.getToken();
if (!Strings.isNullOrEmpty(token)) {
// parse the history token
String t = token.substring(2,3);
String q = token.substring(6, token.length());
int tabIndex = Integer.valueOf(t);
setSelectedTab(tabIndex);
search(q);
} else {
// init from scratch
setSelectedTab(0);
}
// Add a listener to your tab panel, to change the History token everytime the
tab changes
tabPanel.addSelectionHandler(new SelectionHandler<Integer>(){
public void onSelection(SelectionEvent<Integer> event) {
selectedTab = event.getSelectedItem();
setSelectedTab(selectedTab);
changeHistoryToken();
}});
// Add listeners for your search query stuff
}
private void changeHistoryToken() {
History.newItem("t=" + selectedTab + "&q=" + query);
}
private void setSelectedTab(int index) {
// Set the selected tab
}
要点は、アプリケーションの状態が変化するたびに、履歴に新しい項目を追加することです。この項目は、アプリケーションの状態を表す文字列です。次に、アプリケーションをロードするときに、このトークンがここにあるかどうかを確認します。そうである場合は、トークンを解析し、正しい値 (選択したタブ、検索クエリなど) を設定して、アプリケーションを初期化します。履歴トークンがない場合は、デフォルト値で初期化します。
この iframe をページに追加して、履歴サポートを有効にすることを忘れないでください。
<iframe src="javascript:''"
id="__gwt_historyFrame"
style="width:0;height:0;border:0"></iframe>