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

Load GWT page then show window.alert

所以我在搜索中找到的所有内容都是如何在我知道如何做的 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");
    }
}

我也尝试过下面的方法(虽然我认为这不是正确的用法)但是这些只会在应用程序打开时触发一次,然后不会在任何其他应用程序上触发,除非页面被刷新并且仍有负载 "issue".

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()',但在我看来,这似乎不是一个选择。

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

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

编辑:

每个视图只构建一次,所以消息只显示一次。这是正确的行为。如果您想多次显示该消息,您的 presenter/activity 应该显示此消息或告诉视图显示它。