如何从 ValueListBox 值中删除空值
Posted
技术标签:
【中文标题】如何从 ValueListBox 值中删除空值【英文标题】:How to remove null value from ValueListBox values 【发布时间】:2012-06-25 23:00:00 【问题描述】:我是 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;
【问题讨论】:
【参考方案1】:在setAcceptableValues
之前致电setValue
。
原因是调用setAcceptableValues
时的值是null
,而ValueListBox
会自动将任意值(一般传递给setValue
)添加到可接受值列表中(这样该值实际上是set,并且可以由用户选择,如果她选择了另一个值并想回到原来的值,可以重新选择)。首先使用可接受值列表中的值调用 setValue
可以消除此副作用。
见http://code.google.com/p/google-web-toolkit/issues/detail?id=5477
【讨论】:
我刚刚引用了你对之前类似问题的回答,哈哈 :) 我试过了,但它不起作用。我仍然看到 null ......它真的感觉像一个错误,而不是一个功能。我正在运行 2.5-rc1 @ThomasBroyer:如果我们不知道任何可接受的值可能会提前怎么办?如果我们只想要可接受的值,没有空值或空字符串,应该如何使用它?更新:我看到建议使用setAcceptableValues(Collections.emptyList());
,尽管这不起作用【参考方案2】:
引用此question:
注意 setAcceptableValues 会自动添加当前值 (由getValue返回,默认为null)到列表(和setValue 自动将值添加到可接受值列表中,如果 需要)
因此,请尝试颠倒调用 setValue 和 setAcceptableValues 的顺序,如下所示:
monthCombo.setValue(1);
monthCombo.setAcceptableValues(getMonthList());
【讨论】:
以上是关于如何从 ValueListBox 值中删除空值的主要内容,如果未能解决你的问题,请参考以下文章