我正在使用GWT。在我的主页中有以下代码。
<div id="mainDiv"/>
<iframe id="__printingFrame" style="width:0;height:0;border:0"> </iframe>
在EntryPoint的onModuleLoad()中,我有以下代码:
@Override
public void onModuleLoad() {
RootPanel.get("mainDiv").add(new SomePage());
}
在我正在做的SomePage.java的一个方法中:
RootPanel rootPanel = RootPanel.get("__printingFrame");
rootPanel.add(new Html(" "));//adding some widget
但是上面的bcaz我正处于异常之下。我在这里错过了什么吗?
java.lang.AssertionError: A widget that has an existing parent widget may not be added to the detach list
at com.google.gwt.user.client.ui.RootPanel.detachOnWindowClose(RootPanel.java:136)
at com.google.gwt.user.client.ui.RootPanel.get(RootPanel.java:211)
谢谢!
答案 0 :(得分:1)
您的代码中有2个问题(但您现在只看到一个):
您不能嵌套RootPanel
(请参阅http://code.google.com/p/google-web-toolkit/issues/detail?id=3511和http://code.google.com/p/google-web-toolkit/issues/detail?id=3528),这就是导致您看到错误的原因
您无法将小部件添加到iframe。好吧,把它包装在RootPanel
中,从技术上来说,你可以,但是它们会被添加为iframe
元素的子元素,因此用户看不到它们(我想不到它单个浏览器,解释JavaScript但不支持iframe)。
答案 1 :(得分:-1)
RootPanel.get(“id”)只能获得&lt; div&gt; element.you可以像这样包装已存在的元素。
Frame frame=Frame.wrap(DOM.getElementById("__printingFrame"));