2012-06-24 9 views
13

Soy nuevo en GWT. Estoy escribiendo un programa GWT simple donde necesito usar un cuadro combinado para el que utilicé una instancia de ValueListBox. En ese combo, necesito enumerar los números del 1 al 12 que representan los meses de un año. Pero el combo agrega el valor null al final. ¿Puede alguien ayudarme a eliminar el valor null?Cómo eliminar el valor nulo de los valores de 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

Respuesta

24

llamada setValue antes setAcceptableValues.

La razón es que el valor es null cuando llame setAcceptableValues y ValueListBox añade automáticamente cualquier valor (generalmente pasa a setValue) a la lista de valores aceptables (de modo que el valor es en realidad conjunto, y se pueden seleccionar por el usuario, y volver a seleccionar si ella seleccionó otro valor y quiere volver a la original). Llamar primero al setValue con un valor que estará en la lista de valores aceptables anula este efecto secundario.

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

+1

que acabo de citar su respuesta en una pregunta similar anterior, lol :) –

+3

Gracias Thomas Broyer. Funcionó. –

+3

Intenté esto y no está funcionando. Todavía veo nulo ... realmente se siente como un error, y no como una característica. Estoy ejecutando 2.5-rc1 –

2

Citando de este question:

Cuidado con los setAcceptableValues ​​añade automáticamente el valor actual (devuelto por getValue, y por omisión es nulo) a la lista (y setValue añade automáticamente el valor a la lista de valores aceptables también si se necesita )

Entonces inversing tratar el orden en que se llama a setValue y setAcceptableValues ​​de la siguiente manera:

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

Muchas gracias Adel Boutros. Funcionó bien ahora ... –

Cuestiones relacionadas