[英]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.