2012-06-24 10 views
13

Tôi mới sử dụng GWT. Tôi đang viết một chương trình GWT đơn giản, nơi tôi cần sử dụng một hộp kết hợp mà tôi đã sử dụng một thể hiện của ValueListBox. Trong kết hợp đó, tôi cần phải liệt kê ra các con số từ 1 đến 12 đại diện cho các tháng của một năm. Nhưng combo kết hợp null giá trị ở cuối. Bất cứ ai có thể vui lòng giúp tôi làm thế nào để loại bỏ rằng null giá trị?Cách xóa giá trị null khỏi giá trị 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

Trả lời

24

Gọi setValue trước setAcceptableValues.

Nguyên nhân là do giá trị là null khi bạn gọi setAcceptableValues, và ValueListBox tự động thêm bất kỳ giá trị (thường truyền cho setValue) vào danh sách các giá trị có thể chấp nhận (vì vậy mà giá trị thực sự là thiết, và có thể được lựa chọn bởi người dùng và được chọn lại nếu cô ấy đã chọn một giá trị khác và muốn quay lại giá trị ban đầu). Gọi số setValue trước tiên với giá trị nằm trong danh sách các giá trị chấp nhận được sẽ loại bỏ tác dụng phụ này.

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

+1

tôi chỉ trích dẫn câu trả lời của bạn về một câu hỏi tương tự trước đó, lol :) –

+3

Cảm ơn bạn Thomas Broyer. Nó đã làm việc. –

+3

Tôi đã thử điều này và nó không hoạt động. Tôi vẫn thấy null ... nó thực sự cảm thấy giống như một lỗi, và không phải là một tính năng. Tôi đang chạy 2.5-rc1 –

2

Trích dẫn từ question này:

Beware the setAcceptableValues ​​tự động thêm giá trị hiện tại (được trả về bởi getValue, và mặc định là null) vào danh sách (và setValue tự động thêm giá trị vào danh sách giá trị được chấp nhận quá nếu cần thiết)

Vì vậy, thử inversing thứ tự mà bạn gọi setValue và setAcceptableValues ​​như sau:

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

Cảm ơn bạn rất nhiều Adel Boutros. Nó hoạt động tốt ngay bây giờ ... –