如何从 ValueListBox 值中删除空值

2022-09-04 07:27:38

我是GWT的新手。我正在编写一个简单的GWT程序,我需要使用一个组合框,我使用了.在该组合中,我需要列出从1到12的数字,代表一年中的月份。但组合会在末尾附加值。任何人都可以帮我如何删除该值?ValueListBoxnullnull

    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


答案 1

在 .setValuesetAcceptableValues

原因是该值是当您调用时,并自动将任何值(通常传递给)添加到可接受值的列表中(以便该值实际上已设置,并且可以由用户选择,如果她选择了另一个值并希望返回到原始值,则重新选择)。首先使用将在可接受值列表中的值调用可抵消此副作用。nullsetAcceptableValuesValueListBoxsetValuesetValue

查看 http://code.google.com/p/google-web-toolkit/issues/detail?id=5477


答案 2

引用这个问题

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

因此,请尝试反转调用 setValue 和 setAcceptableValue 的顺序,如下所示:

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

推荐