簡體   English   中英

未調用 GWT 歷史 onValueChange()

[英]GWT History onValueChange() not being called

我在一個實現ValueChangeHandler<String>的類中有一個方法,這個類是從onModuleLoad()方法中初始化的,就像這樣

mainController = new MainController();
History.addValueChangeHandler(mainController);
mainController.initialise(History.getToken());

initialise()方法看起來像這樣;

public void initialise(String initialToken) {
    if (initialToken.equals("")) {
        History.newItem(String.valueOf(HistoryTokens.MAIN_PAGE), true);
    } else {
        History.newItem(initialToken, true);
    }
}

當應用程序啟動一個空白的歷史標記,即當按下啟動默認瀏覽器,則onValueChange()方法被調用,而應用程序正在運行調用更改URL onValueChange()方法。

但是,在 URL 中帶有令牌的空白瀏覽器選項卡中輸入 URL,即http://127.0.0.1:8888/MyApp.html?gwt.codesvr=127.0.0.1:9997#mjh&jdfhfh=786543不會調用onValueChange()方法。 當我點擊History.newItem(initialToken, true);我很困惑History.newItem(initialToken, true); if語句的一部分。 我認為這將確保onValueChange()被調用。 怎么了?

您應該始終在 GWT onModuleLoad() 的末尾調用History.fireCurrentHistoryState() ()。 我認為這應該可以解決您的問題。

問題是第一個歷史事件(比如當你加載 page.com/#xyz 時)沒有被 ValueChangeHandler 捕獲,你必須用History.fireCurrentHistoryState()來“偽造”它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM