0

我有这个问题:当我调用 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 - 作为相关问题,当我调用History.addValueChangeHandler(this);构造函数类时,netbeans 说“在构造函数中泄漏这个”。这是什么意思?

干杯

4

3 回答 3

3

也许你忘了添加 History.fireCurrentHistoryState();onModuleLoad()方法的结尾?

于 2010-11-28T13:15:40.110 回答
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();
于 2010-11-29T08:19:23.120 回答
0

恕我直言,“proto://hostname#homepage”形式的主页网址很丑:)

1.只是一个建议:

String token = History.getToken();
String page = token.isEmpty() ? "homepage" : token;
changePage(page);

2.您的入口点是否实施ValueChangeHandler<String>

于 2010-11-26T19:03:59.143 回答