1

我在一个实现这个类的类中有一个方法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);一部分时,我很困惑。if我认为这将确保onValueChange()被调用。怎么了?

4

1 回答 1

2

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

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

于 2012-11-22T01:41:06.647 回答