我有这个问题:当我调用Content类(由于#param而决定查看哪个页面的人)时,我会做这样的事情:
History.addValueChangeHandler(this);
if(!History.getToken().isEmpty()){
changePage(History.getToken());
} else {
History.newItem("homepage");
}
所以,现在,如果我查看浏览器的导航栏,我会看到http://localhost:8084/GWT/?gwt.codesvr=127.0.0.1:9997#homepage
。那是对的。不幸的是,如果我在浏览器上按Back
,我会看到它加载了以前的地址,例如http://localhost:8084/GWT/?gwt.codesvr=127.0.0.1:9997
我在开始时有一个“虚假”的页面。
1 - 我该如何解决?并使用默认令牌启动应用程序,或在历史记录中将其删除。或者只在有空令牌时调用onValueChange
方法,并在用一种switch / if-else决定工作流后。
2 - 作为相关问题,当我在costructor类中调用History.addValueChangeHandler(this);
时,netbeans会说“在构造函数中泄漏它”。这意味着什么?
干杯
答案 0 :(得分:3)
也许您忘记将History.fireCurrentHistoryState();
添加到onModuleLoad()
方法的结尾?
答案 1 :(得分:2)
您需要设置历史记录标记并使用当前标记触发历史记录更改事件。 以下是你能做到的:
/ If the application starts with no history token, redirect to a new
// 'homepage' state.
String initToken = History.getToken();
if (initToken.length() == 0) {
History.newItem("homepage");
}
// Add widgets etc
// Add history listener
History.addHistoryListener(yourHistoryHandler);
// Fire the initial history state.
History.fireCurrentHistoryState();
答案 2 :(得分:0)
恕我直言,“proto:// hostname#homepage”形式的主页网址很丑陋:)
1.
只是一个建议:
String token = History.getToken();
String page = token.isEmpty() ? "homepage" : token;
changePage(page);
2.
您的EntryPoint是否实施了ValueChangeHandler<String>
?