GWT - 历史第一令牌麻烦

时间:2010-11-26 17:07:35

标签: gwt history gwt-history

我有这个问题:当我调用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会说“在构造函数中泄漏它”。这意味着什么?

干杯

3 个答案:

答案 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>