GWT自动刷新代码跳转到主页

时间:2013-11-14 09:58:21

标签: java javascript gwt

我们想要自动刷新使用GWT 2构建的页面。我们使用了很多解决方案来实现它:

GWT auto refresh

automatic refresh of GWT screen

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

自动刷新工作在名为“Kazalar”的主页/标签中:

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

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

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

在上面的question's answer中,我们应该用重新创建该部分视图的代码替换reloadAll()函数的回复者says(如果需要,可以从服务器重新获取数据的一些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();
  }
}

1 个答案:

答案 0 :(得分:2)

使用计时器很好。

假设您了解GWT activities and places。 严酷的方法是使用

重新加载整个模块
Window.Location.replace("url#kalazar:");

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

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

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

既然你说你无法重新创建视图,也许你可以尝试删除并重新创建它?