Important Notice - Forums is archived
To simplify things and help our users to be more productive, we have archived the current forum and focus our efforts on helping developers on Stack Overflow. You can post new questions on Stack Overflow or join our Discord channel.

Vaadin lets you build secure, UX-first PWAs entirely in Java.
Free ebook & tutorial.
error en optionGroup al usar setMultiSelect()
como les va? estoy usando un ejemplo que me pasaron de este gran libro Vaadin 7 UI Design By Example Beginner’s Guide.pdf by Alejandro Duarte!
y no entiendo como podria escojer 2 opciones cuando selecciono 2 cajas de verificacion, me dicen que haga un cast...que el metodo setMultiSelect(true), este al habilitarse retorna un tipo Collection :s
//este array contiene las opciones del option group
ArrayList<String> preguntas = new ArrayList<String>();
preguntas.add("java");
preguntas.add("c++");//correcto----------
preguntas.add("c#");
preguntas.add("php");//correcto -- escojes de estas 2 opciones.
//option group
final OptionGroup option = new OptionGroup("Escoje algunos: ",preguntas);
vLayout.addComponents(txt,ll,txtArea,richText,labelRich,option);
setContent(vLayout);
option.addValueChangeListener(new ValueChangeListener() {
@Override
public void valueChange(ValueChangeEvent event) {
String valor = event.getProperty().getValue().toString();
Notification.show("correcto"+valor);
}
});
option.setMultiSelect(true);
option.setImmediate(true);
Hola Rubén,
Ten en cuenta que:
- Si el OptionGroup NO está en modo multi-select, getValue() retorna el valor seleccionado.
- Si el OptionGroup está en modo multi-select, getValue() retorna una colección con los valores seleccionados.
En tu caso option es multi-select, por lo que getValue() retornará una collección. Esta collección contiene los elementos seleccionados. Podrías hacer algo como lo siguiente (Java 8):
...
Set valoresSeleccionados = (Set) event.getProperty().getValue();
String mensaje = String.join(", ", valoresSeleccionados);
Notification.show(mensaje);
...
Espero esto ayude.
boss, pero una ves que tenga el String mensaje...
cual podria ser la manera correcta o ideal para validar solo 2 checkBox correctos? con .equals() en ese caso? o algo como
if("java".equals(Object.getValue() && "c++".equals.(Object.getValue())) { } ?
y otra consulta para saber que setMultiSelected() me retorna un java.util.Set; ,,,exactamente como se eso? con el debug en eclipse?
saludos y feliz año. gracias.
Tienes que comparar los elementos dentro de la colección:
List<String> valoresValidos = Arrays.asList("java", "c++");
boolean valido = valoresValidos.size() == valoresSeleccionados.size()
&& valoresSeleccionados.containsAll(valoresValidos);
Para comprobar el tipo retornado por getValue() puedes poner un breakpoint e inspeccionar la variable valoresSeleccionados. En Internet puedes encontrar muchos tutoriales sobre el debugger de Eclipse (este es uno de ellos).