0

私はGWTの初心者ですが、履歴メカニズムを使用してGWTでブックマークを作成できることを理解するのに十分な検索を行いました。

しかし、ユーザーの検索クエリにブックマークを適用する必要がある場合、どうすればブックマークを作成できるのか、まだ混乱しています。たとえば、メインページには複数のタブがある場合があります(ここで履歴メカニズムを使用してタブをブックマークできます)。ユーザーが特定のタブに移動し、検索クエリを実行した後。彼がこの検索結果のURLをブックマークしたい場合、GWTでこれを行うにはどうすればよいですか。

私が試したいくつかのオプション:GWT HyperLinksウィジェット、アンカー、UrlBuilderしかし、私は本当に最も便利なものについてはよくわかりません。

どんな入力でも本当にありがたいです。

4

2 に答える 2

1

ここで 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>
于 2012-06-05T08:41:44.837 に答える
0

履歴メカニズムを使用して検索クエリを保存することもできます。URLは次のようになります。

  http://host.html#tab=<tabname>;search=<query>

HyperLinkウィジェットを使用する場合、履歴は自動的に更新されます。

于 2012-06-05T07:12:44.410 に答える