problema con Select, no se visualizan los datos.

Hola, espero que alguien me pueda ayudar con este problema que tengo, e creado este método cargarListaCargo() para que me cargue los datos en el Bean y lo hace muy bien, pero al introducirlo al Select, al parecer lo hace, pero no muestra los datos, pero he probado, si los datos están ahí visualizándolos en un mensaje y si se visualizan, pero en la lista se nota que se ha cargado pero está en blanco, espero que me puedan ayudar, gracias

public BeanItemContainer cargarListaCargo(){

		BeanItemContainer<Cargo> beans = new BeanItemContainer<Cargo>(Cargo.class);
		CargoU cargos =new CargoU();
		        @SuppressWarnings("static-access")
				List<Cargo> s = cargos.getListaCargo();
		                      
		               for (Cargo c : s) {
		            	   beans.addItem(c);
		                    
		               }

		
		return beans;

}

                private Select selectcargo = new Select("Cargo", cargarListaCargo());

                selectcargo.setItemCaptionMode( Select.ITEM_CAPTION_MODE_ID);
	    selectcargo.setItemCaptionPropertyId("nombrecargo");
	  
	    selectcargo.addListener(new Property.ValueChangeListener() {
	        @SuppressWarnings("unchecked")
			public void valueChange(ValueChangeEvent event) {
	            // Get the selected item
	            Object itemId = event.getProperty().getValue();
	            BeanItem<Cargo> item =  (BeanItem<Cargo>) selectcargo.getItem(itemId);
	            Cargo cargo=(Cargo) item.getBean();
	            
	            // Get the actual bean and use the data		           
	            Notification.show("Código"+cargo.getId());
	        }
	    });
	    
	    selectcargo.setImmediate(true);
	    selectcargo.setNullSelectionAllowed(false);

Lo subí app engine lo que estoy haciendo, tienen que dar clic al boton obrero, luego en nuevo que se encuentra en el extremo derecho, saldrá una ventana y dónde dice cargo se debería mostrar los datos, el otro Select que es empresa lo hice con un IndexedContainer y se muestra pero no puedo acceder a los datos del IndexdContainer, solo a lo que se muestra y lo que necesito es el código, espero em puedan ayudar aquí les dejo el link: http://seguridadmls.appspot.com/

Hola Luis,

Primero e todo, entiendo que en el select que comentas quieres sacar el código de la clase Cargo, si es así lo que has hecho no te vale, es decir, esto:

selectcargo.setItemCaptionMode( Select.ITEM_CAPTION_MODE_ID); Es incorrecto.

En el libro
5.14. Selecting Items
para Vaadin 7, para Vaadin 6
5.13. Selecting Items
.

Si quieres usar el atributo “nombrecargo” de tu clase, debes hacer lo siguiente:

selectcargo.setItemCaptionMode( Select.ITEM_CAPTION_MODE_PROPERTY); selectcargo.setItemCaptionPropertyId("nombrecargo"); Espero que te sirva.

Un saludo.

Javi

Hola Javier, gracias por tu comentario, pero sacar los valores del selectcargo si lo puedo hacer, lo que sucede es que los datos no se visualizan, se notan que están en la lista pero parece como si lo hubieras escrito con un lapicero sin tinta, gracias por tu ayuda.

Hola Luis,

En principio lo que te puse era para que se visualizaran los textos en el Select…

Entiendo por lo que me dices que has probado el código que te propuse, eso al menos en mi caso funciona correctamente.

Otra prueba que puedes hacer es Sobre-escribir el método toString() en tu clase Cargo haciendo que devuelva “nombrecargo” y no tocar nada del código que pusiste en el primer post. Es decir: @Override public String toString() { return this.nombrecargo; } Si así no funciona, necesitaría algo más de información, ya que si estas obteniendo los cargos de base de datos puede ser también que no te esté devolviendo el cargo y si el código, por lo que podrías probar a poner como item caption del select el valor del “id” del Cargo en lugar de “nombrecargo”.

Un saludo,

Javi