GWT历史onValueChange()未被调用

时间:2012-11-22 00:31:19

标签: java gwt gwt-history

我在一个实现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。出了什么问题?

1 个答案:

答案 0 :(得分:2)

您应该始终在GWT onModuleLoad()的末尾调用History.fireCurrentHistoryState()。我认为这应该可以解决你的问题。

问题是第一个历史事件(比如当你加载page.com/#xyz时)没有被ValueChangeHandler捕获,你必须用History.fireCurrentHistoryState()

“伪造它”