我有一个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开发模式。
有人有线索吗?
提前谢谢你,
麦克
答案 0 :(得分:2)
请勿使用modal
弹出窗口,其中包含all sorts of issues。首选显示玻璃面板(setGlassEnabled
)。
答案 1 :(得分:0)
模态窗口会阻止各种事件以确保模态。这需要找到解决方法。
我建议在点击时禁用该按钮,并在rpc成功或失败时启用它。
如果你需要一次禁用它们,那么你很可能需要实现自己的事件,在事件总线中注册它们并根据你的需要处理它们。