GWT - 历史第一个令牌出现问题

发布于 2024-10-04 18:42:51 字数 740 浏览 3 评论 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 说“在构造函数中泄漏 this”。这意味着什么?

干杯

I have this problem : when i call the Content class (the one who decide which page to view, due to the #param) I do somethings like this :

History.addValueChangeHandler(this);
if(!History.getToken().isEmpty()){
    changePage(History.getToken());
} else {
    History.newItem("homepage");
}

So, now, if i look at browser's navigation bar, i see http://localhost:8084/GWT/?gwt.codesvr=127.0.0.1:9997#homepage. And that's right. Unfortunatly, If i press Back on my browser, i see that it load the previous address, such as http://localhost:8084/GWT/?gwt.codesvr=127.0.0.1:9997

I have a sort of "fake" page at the beginning.

1 - How can I fix it? And start the application with a default token, or remove it in the history. Or just call the onValueChange method when there is empty token, and after decide the workflow with a sort of switch/if-else.

2 - As related question, when i call History.addValueChangeHandler(this); in the costructor class, netbeans say "Leaking this in constructor". What it means?

Cheers

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

鱼忆七猫命九 2024-10-11 18:42:51

也许您忘记将 History.fireCurrentHistoryState(); 添加到 onModuleLoad() 方法的末尾?

Maybe you forgot to add History.fireCurrentHistoryState(); to end of onModuleLoad() method?

戏舞 2024-10-11 18:42:51

您需要设置历史令牌并使用当前令牌触发历史更改事件。
您可以这样做:

/ 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();

You need to set a history token and fire the history change event with current token.
Heres how you could do it:

/ 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();

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

1. 只是一个建议:

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

2. 您的 EntryPoint 是否实现了 ValueChangeHandler< ;字符串>

IMHO, home url in form of "proto://hostname#homepage" is ugly :)

1. Just a suggestion:

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

2. Does Your EntryPoint implement ValueChangeHandler<String>?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文