我们想要自动刷新使用GWT2构建的页面。我们使用了很多解决方案来实现:
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中,答复者says我们应该用重新创建该部分视图的代码替换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();
}
}发布于 2013-11-14 20:12:08
使用计时器就可以了。
假设你知道GWT activities and places的事。最苛刻的方法是使用以下命令重新加载整个模块
Window.Location.replace("url#kalazar:");您已经提到过了;但是更好的方法(假设您正在实现MVP模式)是在Kalazar视图的presenter上创建一个刷新方法。这样你就不需要重新加载页面了。
private void reloadAll() {
myKalazarPresenter.refresh();
}
private void myKalazarPresenter() {
myKalazarView.clear();
myKalazerView.reInit(kalazarInitializationData);
}既然你说你不能reInit视图,也许你可以试着删除并重新创建它?
https://stackoverflow.com/questions/19974558
复制相似问题