如何从ValueListBox值中删除空值

时间:2012-06-24 10:16:15

标签: java google-app-engine gwt

我是GWT的新手。我正在编写一个简单的GWT程序,我需要使用一个组合框,我使用了ValueListBox的实例。在那个组合中,我需要列出1到12之间的数字,代表一年中的几个月。但是组合最后添加了null值。任何人都可以帮助我如何删除null值?

    final ValueListBox<Integer> monthCombo = new ValueListBox<Integer>(new Renderer<Integer>() {

            @Override
            public String render(Integer object) {
                return String.valueOf(object);
            }

            @Override
            public void render(Integer object, Appendable appendable) throws IOException {
                if (object != null) {

                    String value = render(object);
                    appendable.append(value);
                }
            }
        });
    monthCombo.setAcceptableValues(getMonthList());
    monthCombo.setValue(1);

    private List<Integer> getMonthList() {
        List<Integer> list = new ArrayList<Integer>();

        for (int i = 1; i <= 12; i++) {
            list.add(i);
        }

        return list;
    }

enter image description here

2 个答案:

答案 0 :(得分:25)

setValue之前致电setAcceptableValues

原因是当您致电null时,该值为setAcceptableValues,而ValueListBox会自动将任何值(通常传递给setValue)添加到可接受值列表中(这样该值实际上是 set ,并且可以由用户选择,如果她选择了另一个值并想要返回原始值,则重新选择)。首先使用可接受值列表中的值调用setValue会抵消此副作用。

请参阅http://code.google.com/p/google-web-toolkit/issues/detail?id=5477

答案 1 :(得分:2)

引用此question

  

请注意setAcceptableValues会自动添加当前值   (由getValue返回,默认为null)到列表(和setValue   如果,则自动将值添加到可接受值列表中   需要)

因此请尝试颠倒调用setValue和setAcceptableValues的顺序,如下所示:

monthCombo.setValue(1);
monthCombo.setAcceptableValues(getMonthList());