2012-06-24 74 views
13

我是GWT新手。我正在编写一个简单的GWT程序,我需要使用一个组合框,为此我使用了一个ValueListBox的实例。在这个组合中,我需要列出1到12的数字,代表一年中的月份。但组合最后附加值为null。任何人都可以请帮助我如何删除该值null值?如何从ValueListBox值中删除空值

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

回答

24

setAcceptableValues之前调用setValue

的原因是,当调用setAcceptableValues值为null,并ValueListBox自动添加的任何值(通常传递到setValue)到可接受的值的列表(使得值实际上设置是,并且可以被选择由用户选择,并且如果她选择了另一个值并且想要回到原来的值则重新选择)。首先调用setValue,其值将在可接受值列表中,否定此副作用。

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

+1

我刚引述你的答案在以前类似的问题,哈哈:) –

+3

谢谢托马斯Broyer。有效。 –

+3

我试过了,它不工作。我仍然看到空......它真的感觉像一个错误,而不是一个功能。我正在运行2.5-rc1 –

2

从这个question报价:

谨防setAcceptableValues自动将当前值 (GetValue返回,并默认为null)的列表(和setValue方法 自动添加值,如果需要 ,也可接受的值列表)

所以尝试反演在你打电话的setValue和setAcceptableValues如下顺序:

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

非常感谢Adel Boutros。现在它运行良好... –