0

使用しているより大きなアプリケーションがありますが、GWT履歴のドキュメントには問題を示す簡単な例があります。例は便宜上コピーされています。

public class HistoryTest implements EntryPoint, ValueChangeHandler
{
    private Label lbl = new Label();

    public void onModuleLoad()
    {
        Hyperlink link0 = new Hyperlink("link to foo", "foo");
        Hyperlink link1 = new Hyperlink("link to bar", "bar");
        Hyperlink link2 = new Hyperlink("link to baz", "baz");

        String initToken = History.getToken();

        if (initToken.length() == 0)
        {
            History.newItem("baz");
        }

        // Add widgets to the root panel.
        VerticalPanel panel = new VerticalPanel();
        panel.add(lbl);
        panel.add(link0);
        panel.add(link1);
        panel.add(link2);
        RootPanel.get().add(panel);

        History.addValueChangeHandler(this);        // Add history listener
        History.fireCurrentHistoryState();
    }

    @Override
    public void onValueChange(ValueChangeEvent event)
    {
        lbl.setText("The current history token is: " + event.getValue());
    }
}

問題は、アプリケーションを更新すると、履歴スタックが吹き飛ばされることです。ユーザーがページを更新した場合でも戻るボタンが引き続き役立つように、履歴をどのように保存しますか?

4

2 に答える 2

2

アプリケーション用に Firefox と Chrome でテストしたところ、ページを更新しても履歴がクリアされません。どのブラウザを使用していますか? あなたは持っていますか

<iframe src="javascript:''" id='__gwt_historyFrame' style='position:absolute;width:0;height:0;border:0'></iframe>

あなたのHTMLで?

于 2009-06-21T10:30:04.180 に答える
1

GWT は History オブジェクトを提供することで、この問題に対応しています。その静的メソッドを呼び出すことによりHistory.newItem("your token")、クエリ文字列にトークンを渡すことができます。

onValueChange(ValueChangeEvent event){}ただし、gwt アプリケーションで履歴が変更されるたびにイベントが発生し、メソッドで適切なページを呼び出すことができることに注意する必要があります。以下は、この問題を解決するために使用する手順のリストです。

  1. 新しいページを呼び出す必要があるオブジェクトにクリック リスナーを追加します。イベントを処理する際に、 にトークンを追加しますhistory.(History.newItem("new_token")

  2. ValueChangeHandlerEntryPoint を実装するクラスに を実装します。

  3. onValueChangeHandler(this)EntryPoint を実装するクラスにリスナーを追加します。EntryPoint を実装するクラスのメソッドに行が追加されていることを確認しますonModuleLoad()(このメソッドに追加されることが重要です) (かなり明白です!)

  4. 最後にonValueChange(ValueChangeEvent event){ //新しいページを呼び出す } メソッドを実装します。

それでおしまい

于 2010-10-02T19:45:45.290 に答える