我有一个GWT应用程序,它有一个简单的“请等待”机制。当我按下一个按钮发送RPC调用时,我会在屏幕上显示一个模式弹出对话框,它会阻止用户交互,直到RPC返回。这样,我就可以防止用户多次单击该按钮并发送多个RPC。这可以完美地工作,除了在加载IFrame时。在这种情况下,我在iframe上安装的加载处理程序永远不会被调用。
/**
* 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开发模式下不会发生。
有谁有线索吗?
先谢谢你,
麦克
发布于 2012-09-17 16:14:45
不要使用modal弹出窗口,它有all sorts of issues。更喜欢显示玻璃面板(setGlassEnabled)。
发布于 2012-09-17 21:53:59
模态窗口防止各种事件,以确保模态。这就是你需要找到解决办法的情况。
我建议在单击时禁用该按钮,并在rpc成功或失败时启用它。
如果你需要一次禁用它们,那么你很可能需要实现你自己的事件,在事件总线中注册它们,并根据你的需要处理它们。
https://stackoverflow.com/questions/12454986
复制相似问题