0

我们想要自动刷新使用 GWT 2 构建的页面。我们使用了很多解决方案来做到这一点:

GWT 自动刷新

GWT画面自动刷新

但他们都没有正常工作。问题有点复杂:

自动刷新在名为“Kazalar”的主页/选项卡中工作:

http://dl.dropbox.com/u/103580364/temp/000766.jpg

但是,如果用户在另一个选项卡中,那么在自动刷新后浏览器会跳转到主页/选项卡:

http://dl.dropbox.com/u/103580364/temp/000767.jpg

在上述问题的答案中,回答者我们应该用重新创建该部分视图的代码替换 reloadAll() 函数(如果需要,可以调用一些 Ajax 从服务器重新获取数据)。我们无法测试这部分,因为我们不知道如何编写代码来重新创建特定部分的视图。有人可以举例说明如何做到这一点吗?

public class TimerExample implements EntryPoint, ClickListener {

  public void onModuleLoad() {
    Button b = new Button("Click and wait 5 minutes");
    b.addClickListener(this);

    RootPanel.get().add(b);
  }

  public void onClick(Widget sender) {
    Timer t = new Timer
      public void run() {
        reloadAll();
      }
    };

    // Schedule the timer to run once in 5 minutes.
    t.schedule(5*1000*60);
  }

  private void reloadAll() {
    Window.Location.reload();
  }
}
4

1 回答 1

2

使用计时器很好。

假设您了解GWT 活动和地点。苛刻的方法是使用重新加载整个模块

Window.Location.replace("url#kalazar:");

您已经提到过;但是更好的方法(假设您正在实现 MVP 模式)是在 Kalazar 视图的演示者上创建一个刷新方法。这样您就不需要重新加载页面。

  private void reloadAll() {
    myKalazarPresenter.refresh();
  }

  private void myKalazarPresenter() {
    myKalazarView.clear();
    myKalazerView.reInit(kalazarInitializationData);
  }

既然你说你不能重新初始化视图,也许你可以尝试删除并重新创建它?

于 2013-11-14T12:12:07.937 回答