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



我们希望自动刷新使用 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();
  }
}

使用计时器是可以的。

假设您了解GWT的活动和地点。苛刻的方法是使用

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

已经提到了它;但一个真正更好的方法(假设你正在实现MVP模式)是在Kalazar视图的表示器上创建一个刷新方法。这样,您无需重新加载页面。

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

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

相关内容

最新更新