Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web applications GWT扩展decorpanel并添加到rootPanel_Web Applications_Gwt_Jakarta Ee - Fatal编程技术网

Web applications GWT扩展decorpanel并添加到rootPanel

Web applications GWT扩展decorpanel并添加到rootPanel,web-applications,gwt,jakarta-ee,Web Applications,Gwt,Jakarta Ee,我对使用gwt还不熟悉,尽管我已经开始掌握一些窍门。我今天遇到的一个令人困惑的情况是:。(这是为了简化我的问题) 由于某种原因,我的问题出现在线路上: RootPanel.get("reference").add(log); 我得到一个空指针异常…指向上面一行的堆栈上的行是: java.lang.NullPointerException: null at com.google.gwt.user.client.ui.Panel.doAttachChildren(Panel.java:16

我对使用gwt还不熟悉,尽管我已经开始掌握一些窍门。我今天遇到的一个令人困惑的情况是:。(这是为了简化我的问题)

由于某种原因,我的问题出现在线路上:

RootPanel.get("reference").add(log);
我得到一个空指针异常…指向上面一行的堆栈上的行是:

java.lang.NullPointerException: null
    at com.google.gwt.user.client.ui.Panel.doAttachChildren(Panel.java:163)
    at com.google.gwt.user.client.ui.Widget.onAttach(Widget.java:259)
    at com.google.gwt.user.client.ui.Widget.setParent(Widget.java:393)
    at com.google.gwt.user.client.ui.Panel.adopt(Panel.java:119)
    at com.google.gwt.user.client.ui.ComplexPanel.add(ComplexPanel.java:86)
    at com.google.gwt.user.client.ui.AbsolutePanel.add(AbsolutePanel.java:80)
因此,我认为这只是一个简单的问题,然而,当我将MyPanel中的所有代码放入onModuleLoad方法中的ClassA中,并在其中创建一个DecororPanel时,没有出现空指针异常。为什么会这样,我怎样才能修复它。这似乎是个简单的问题,但我不确定该往哪个方向走。有人有主意吗

面板中的此行发生空指针异常:


对于(Iterator it=Iterator();it.hasNext();){

以上代码对我来说没有任何问题。你能发布你正在使用的gwt和OS的版本吗?确保你的html中有以下DIV

<div id="reference"></div> 

如BlackPanther所说,如果上述所有操作都失败,则最有可能的错误是您在基本HTML页面中缺少了
或具有该id的其他HTML元素

我试过了

    /**
 * This is the entry point method.
 */
public void onModuleLoad() {
    // MyPanel mp = new MyPanel();
    DecoratorPanel mp = new DecoratorPanel();
    final TextBox tb = new TextBox();
    tb.setText("test");
    mp.add(tb);
    tb.setFocus(true);
    RootPanel.get("reference").add(mp);
}
它会抛出同样的错误

RootPanel.get("reference") 

返回null,因为在HTML页面中找不到元素。

因此,我认为这是由于库中的jar不正确。无论哪种方式,它现在都可以工作。不过,我还有一个问题。如何从没有onModuleLoad的类向根面板添加面板。这可能吗?

正如我提到的,当我放置所有的将MyPanel代码放入ClassA中的onModuleLoad中,而不是在单独的类中定义它。但是,对于我来说,将所有ui放在一个类中并不是一个不可接受的解决方案,你知道吗?哈。我还应该提到,即使存在错误,也会显示正确的ui。还有什么想法吗?不幸的是,当错误发生时,我正在使用vista我不确定这是否会影响任何事情,因为唯一的区别是我在哪里定义ui。我尝试的应该很简单。对吗?我累了,刚刚醒来,请原谅上面的打字错误。例如。acceptable@John,我刚刚试过你说的,看看我的答案,我几乎可以肯定它与你在e app。确保浏览器缓存没有与您玩,并且使用的是过期版本的HTML页面。清除浏览器缓存以确保。是的。这是可能的。onModuleLoad方法只是应用程序的入口点。RootPanel.get().add(panel)可以在任何地方。如果您说RootPanel.get(“somediv”).add(panel)这样,它将搜索id为“somediv”的div。就是这样。将panel添加到RootPanel和onModuleLoad方法之间没有链接。
    /**
 * This is the entry point method.
 */
public void onModuleLoad() {
    // MyPanel mp = new MyPanel();
    DecoratorPanel mp = new DecoratorPanel();
    final TextBox tb = new TextBox();
    tb.setText("test");
    mp.add(tb);
    tb.setFocus(true);
    RootPanel.get("reference").add(mp);
}
RootPanel.get("reference")