0

我有一个带有简单“请稍候”机制的 GWT 应用程序。当我按下按钮发送 RPC 调用时,我会在屏幕上显示一个模式弹出对话框,该对话框会阻止用户交互,直到 RPC 返回。像这样,我防止用户多次单击按钮并发送多个 RPC。这非常有效,除非在加载 IFrame 时。在这种情况下,我安装在 iframe 上的 loadhandler 永远不会被调用。

/**
 * Test class
 */
public class Test implements EntryPoint {

    /**
     * This is the entry point method.
     */
    @Override
    public void onModuleLoad() {
        final PopupPanel popup = new PopupPanel(false, true);
        popup.add(new Label("Please wait"));
        popup.center();

        final Frame frame = new Frame("http://www.google.com");
        frame.addLoadHandler(new LoadHandler() {
            @Override
            public void onLoad(LoadEvent event) {
                Window.alert("Event received");
                popup.hide();
            }
        });

        RootPanel.get().add(frame);
    }
}

但是,如果我构造一个 PopupPanel(false, false),则会触发 LoadEvent。注意:这只发生在编译模式下,不会出现在 GWT 开发模式下。

有人有线索吗?

先感谢您,

麦克风

4

2 回答 2

2

不要使用modal弹出窗口,它有各种各样的问题。更喜欢显示玻璃面板 ( setGlassEnabled)。

于 2012-09-17T08:14:45.193 回答
0

模态窗口防止各种事件以确保模态。在这种情况下,您需要找到解决方法。

我建议禁用单击按钮并在 rpc 成功或失败时启用它。

如果您需要一次全部禁用它们,那么您很可能需要实现自己的事件,在事件总线中注册它们并根据您的需要处理它们。

于 2012-09-17T13:53:58.547 回答