Как удалить значение 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]()
Ответы
Ответ 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());