加载GWT页面然后显示window.alert

时间:2016-05-13 14:42:06

标签: java-ee gwt

所以我在搜索中发现的一切都是如何在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()',但这似乎不是我的选择。

1 个答案:

答案 0 :(得分:2)

您将Window.alert()方法放在initWidget之后,这意味着所有UI都是在显示此消息时构建的。如果要确保浏览器已完成呈现UI,可以将Window.alert()包装在scheduleDeferredI explain it here)中。

此外,加载数据或图像可能会导致延迟。在加载数据的情况下,您可以将Window.alert()放入数据加载方法的回调中。对于图像,您可以使用GWT Image小部件,它实现了HasLoadHandlers接口,但在大多数情况下使用scheduleDeferred就足够了。

编辑:

每个视图只构造一次,因此消息只显示一次。这是正确的行为。如果您想多次显示该消息,您的演示者/活动应显示此消息或告诉视图显示该消息。