所以我在搜索中发现的一切都是如何在JS中完成的,我知道该怎么做。我希望找到的是一个GWT机制来实现这一目标。
我要做的是在加载后(不是很难)在页面上发出警告window.alert(app.getStatus())
。问题是,使用我当前的代码,在页面完成加载之前弹出警报,以便用户看到部分加载的白页,在单击“确定”按钮之前不会执行任何操作。
这就是我目前所拥有的
public class DisplayApplicationViewImpl extends Composite
implements DisplayApplicationView {
public DisplayApplicationViewImpl() {
/*...
Lot of logic that is not helpful
...*/
initWidget(uiBinder.createAndBindUi(this));
Window.alert("Test");
}
}
我也尝试了下面的内容(虽然我不认为这是正确的用法)但是这些只会在打开一个应用程序时触发一次,然后不会触发任何其他应用程序,除非页面刷新并且仍然有负载“问题”。
Scheduler.get().scheduleFinally(new RepeatingCommand(){
@Override
public boolean execute() {
Window.alert("Test");
return false;
}
});
这个稍微靠近一点,因为它允许加载gif显示,但我不确定为什么只有这个代码的功能实际上没有变化。
Scheduler.get().scheduleDeferred(new ScheduledCommand(){
@Override
public void execute() {
Window.alert("Test");
}
});
我已经研究过'Window.onload()',但这似乎不是我的选择。
答案 0 :(得分:2)
您将Window.alert()方法放在initWidget
之后,这意味着所有UI都是在显示此消息时构建的。如果要确保浏览器已完成呈现UI,可以将Window.alert()包装在scheduleDeferred
(I explain it here)中。
此外,加载数据或图像可能会导致延迟。在加载数据的情况下,您可以将Window.alert()放入数据加载方法的回调中。对于图像,您可以使用GWT Image小部件,它实现了HasLoadHandlers接口,但在大多数情况下使用scheduleDeferred
就足够了。
编辑:
每个视图只构造一次,因此消息只显示一次。这是正确的行为。如果您想多次显示该消息,您的演示者/活动应显示此消息或告诉视图显示该消息。