我们想要自动刷新使用GWT 2构建的页面。我们使用了很多解决方案来实现它:
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();
}
}
答案 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);
}
既然你说你无法重新创建视图,也许你可以尝试删除并重新创建它?