GWT处理后退,刷新,关闭按钮

时间:2012-08-02 18:24:33

标签: java gwt gwt-rpc mvp4g

当用户关闭窗口,刷新它或单击后退按钮只针对一个页面时,我正在尝试运行一些RPC调用。我发现一篇文章谈论处理,但解决方案不能正常工作,缺少后退按钮处理程序(不工作),并始终是在网页上的所有页面,如果你离开页面,我找不到删除处理程序的东西

    Window.addWindowClosingHandler(new Window.ClosingHandler() {

                @Override
                public void onWindowClosing(ClosingEvent event) {
                    event.setMessage("You sure?");
                }
            });

    Window.addCloseHandler(new CloseHandler<Window>() {

                @Override
                public void onClose(CloseEvent<Window> event) {

                    // Execute code when window closes!
                System.out.println("ble ! ");

                }
            });

框架:GWT 2.4与mvp4g。
浏览器:FF和Chrome。

2 个答案:

答案 0 :(得分:1)

因为我使用mvp4g框架我在那里找到了解决方案,你需要使用CyclePresenter扩展你的演示者并覆盖onLoad和onUnload方法。这些方法在从DOM加载/卸载视图时触发,我测试并适用于所有情况,f5,后退按钮,关闭浏览器/选项卡,转到其他Web并调用其他事件。现在我不能在那里放一些代码。

答案 1 :(得分:0)

离开页面时需要删除处理程序,然后在再次进入页面时重新添加处理程序。你有上面代码覆盖的“添加”一面,你错过了“删除”部分。您可以使用从HandlerRegistration方法返回的add*Handler对象来执行此操作。如果要删除已注册的处理程序,只需调用HandlerRegistration.removeHandler()方法:

HandlerRegistration windowClosingHandler = Window.addWindowClosingHandler(new ClosingHandler() {
    @Override
    public void onWindowClosing(ClosingEvent event) {
        // Handle window closing
    }
});
// From now on the CloseHandler will be fired

// ...
// Somewhere else:
windowClosingHandler.removeHandler();
// From now on the CloseHandler won't be fired