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/
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.
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.
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”.