java - GWT 历史 onValueChange() 未被调用

标签 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);
    }
}

当应用程序以空白历史记录 token 启动时,即按下启动默认浏览器时,onValueChange()方法被调用,在应用程序运行时更改 url 会调用 onValueChange()方法。

但是,在空白浏览器选项卡中输入 URL,并在 URL 中输入 token ,即 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()被称为。出了什么问题?

最佳答案

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

问题是,第一个历史事件(例如当您加载 page.com/#xyz 时)没有被 ValueChangeHandler 捕获,您必须使用 History.fireCurrentHistoryState() 来“伪造它”

关于java - GWT 历史 onValueChange() 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13504249/

相关文章:

java - 我如何通过我在 GWT 中的历史记录来确定我是进入 "forward"还是 "backward"?

java - 我正在将图片文件从电脑发送到 Android 手机,两者都通过套接字连接到同一 WLAN

ruby-on-rails - JRuby on Rails Production 响应 200 OK 即使 Controller 代码设置状态 :unauthorized

java - 我可以在开发后期实现 JBullet 物理吗

java - HttpUrlConnection : how to get the XML response into a String?

html - 如何为 GWT 排列动态提供 list

java - 提交按钮 + GWT 历史记录

java - Parceler POJO 到 Parcelable 失败并出现 ParcelerRuntimeException

Java使用RSA从模数和指数生成 key 进行加密/解密