Подтвердить что ты не робот

Как удалить значение null из значений ValueListBox

Я новичок в 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

4b9b3361

Ответ 1

Вызовите setValue до setAcceptableValues.

Причина в том, что значение null при вызове setAcceptableValues, а ValueListBox автоматически добавляет любое значение (обычно переданное в setValue) в список допустимых значений (так что значение действительно установлено, и может быть выбран пользователем и повторно выбран, если она выбрала другое значение и хочет вернуться к исходному). Вызов setValue сначала со значением, которое будет в списке допустимых значений, отрицает этот побочный эффект.

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

Ответ 2

Цитата из этого question:

Остерегайтесь setAcceptableValues ​​автоматически добавляет текущее значение (возвращается getValue и по умолчанию имеет значение null) в список (и setValue автоматически добавляет значение в список допустимых значений, если необходимо)

Итак, попробуйте инвертировать порядок, в котором вы вызываете setValue и setAcceptableValues ​​следующим образом:

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