GWT列表框未填充

时间:2014-06-12 17:46:24

标签: java gwt gwt2

我正在使用gwt 2.6.0。我的页面上有一个列表框,使用以下代码

弹出
    public void setOHIInfo(ArrayList<OHIInfoTo> result) {
    ohiListBox.setEnabled(true); // ohiListBox is instance of com.google.gwt.user.client.ui.ListBox
    for (OHIInfoTo ohiinfo : result) {
        ohiListBox.addItem(ohiinfo.getOhiName(), ohiinfo.getOhiName());
        GWT.log(ohiinfo.getOhiName()); // 5 data items are printed; no spaces
    }
    GWT.log("OHI Count - " + ohiListBox.getItemCount()); // Prints OHI Count - 5
}

页面加载时会打印2个GWT.log行,但列表框为空。 我在项目中搜索过,没有其他地方覆盖列表框。我还检查了chrome中的listbox元素,它实际上没有任何

还有其他方法可以找到问题吗?

2 个答案:

答案 0 :(得分:0)

愚蠢的问题:您是否已将列表框添加到以下示例中的gwt入口点中加载的任何容器中?

public class ListBoxExample implements EntryPoint {

  public void onModuleLoad() {
    // Make a new list box, adding a few items to it.
    ListBox lb = new ListBox();
    lb.addItem("foo");
    lb.addItem("bar");
    lb.addItem("baz");
    lb.addItem("toto");
    lb.addItem("tintin");

    // Make enough room for all five items (setting this value to 1 turns it
    // into a drop-down list).
    lb.setVisibleItemCount(5);

    // Add it to the root panel.
    RootPanel.get().add(lb);
  }
}

编辑:我刚试过你的代码:

public class OHIInfoTo {

    String name;

    public OHIInfoTo(String name) {
        this.name = name;
    }

    public String getOhiName() {
        return name;
    }

    public void setOhiName(String name) {
        this.name = name;
    }
}

public class ListBoxEP implements EntryPoint {
    @Override
    public void onModuleLoad() {
        List<OHIInfoTo> result = new ArrayList<OHIInfoTo>();
        result.add(new OHIInfoTo("toto"));
        result.add(new OHIInfoTo("hello"));

        ListBox ohiListBox = new ListBox(false);
        ohiListBox.setEnabled(true); // ohiListBox is instance of
                                        // com.google.gwt.user.client.ui.ListBox
        for (OHIInfoTo ohiinfo : result) {
            ohiListBox.addItem(ohiinfo.getOhiName(), ohiinfo.getOhiName());
            // GWT.log(ohiinfo.getOhiName()); // 5 data items are printed; no
            // spaces
        }

        ohiListBox.setVisibleItemCount(ohiListBox.getItemCount());

        RootPanel.get("editorAppContainer").add(ohiListBox);
    }
}

它工作正常。你确定没有其他可能导致问题的东西吗?当你调用setVisibleItemCount时,你的listBox是否已填充?

答案 1 :(得分:0)

终于解决了这个!!! 对setOHIInfo的调用是异步的。因此,这个方法几乎与构造函数并行执行,并在列表框被删除之前完成。不知何故,它没有抛出空指针异常。这仍然是一个谜。

要修复 - 我确保首先渲染列表框,然后设置值。