我是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;
}
答案 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());