我在一个实现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()
方法,在应用程序运行时更改网址会调用{ {1}}方法。
但是,在空白浏览器标签中输入带有URL中的标记的网址,即onValueChange()
,不会调用http://127.0.0.1:8888/MyApp.html?gwt.codesvr=127.0.0.1:9997#mjh&jdfhfh=786543
方法。当我点击onValueChange()
语句的History.newItem(initialToken, true);
部分时,我感到很困惑。我认为这样可以确保调用if
。出了什么问题?
答案 0 :(得分:2)
您应该始终在GWT onModuleLoad()的末尾调用History.fireCurrentHistoryState()
。我认为这应该可以解决你的问题。
问题是第一个历史事件(比如当你加载page.com/#xyz时)没有被ValueChangeHandler捕获,你必须用History.fireCurrentHistoryState()