2017-10-10 5 views
0

Quelqu'un pourrait me dire s'il vous plaît comment puis-je obtenir la valeur de radiobutton pour le valider?Valider les radiobuttons dans Vaadin

J'ai essayé quelque chose comme ceci:

binder = new Binder<>(); 
SelectionItemConverter selectionItemConverter = new SelectionItemConverter(radioOptions); 
binder.forField(radioButtonGroup).withConverter(selectionItemConverter).asRequired("Mandatory") 
.bind(e -> getValue(), (b, v) -> setValue(v)); 
binder.setBean(this); 

Tout d'abord j'ai commencé avec asRequired (« Obligatoire ») Validator, mais je ne vois pas un asteriks rouge à côté de mon champ. Est-ce que quelqu'un connaît un bon tutoriel sur le formulaire de validation différent de la chaîne?

+1

Avez-vous essayé 'setRequiredIndicatorVisible (true);' pour atteindre asteriks rouge? Jetez un oeil à cet exemple avec [DateValidator] (https://stackoverflow.com/questions/46604363/vaadin-datefield-validation-does-not-show-validation-errors/46647837#46647837) – avix

+0

@avix Je crois que cela devrait ont été couverts par ['asRequired (" Mandatory ")'] (https://vaadin.com/download/release/8.1/8.1.5/docs/api/com/vaadin/data/Binder.BindingBuilder.html# asRequired-java.lang.String-). @Anna Utilisez-vous un thème personnalisé et pouvez-vous partager un exemple complet? Je viens de faire un échantillon rapide en utilisant une énumération avec Vaadin 8.1.5 et ça marche très bien. En outre, les documents [Vaadin docs] (https://vaadin.com/docs/v8/framework/datamodel/datamodel-forms.html#datamodel.forms.validation) liés à la validation sont généralement une bonne source d'informations. – Morfic

Répondre

0

Valeur du bouton radio que vous pouvez valider avec le validateur normal. Si vous utilisez des valeurs enum, vous ne pouvez pas valider les entrées utilisateur car l'utilisateur peut choisir entre des valeurs valides.

Si vous souhaitez valider la valeur enum par rapport à un autre champ, vous pouvez ajouter un validateur qui compare la valeur actuelle du champ à un autre champ. Il est important de ne pas oublier d'ajouter un écouteur de changement de valeur au classeur pour déclencher la validation si le second champ change.

RadioButtonGroup<RadioSelection> radioButtonGroup = new RadioButtonGroup<>("Answer"); 
radioButtonGroup.setItems(RadioSelection.values()); 
binder.forField(radioButtonGroup) 
     .asRequired("Mandatory") 
     .withValidator(value -> !(isToday(dateField) && value == RadioSelection.MAYBE), 
       "Cannot answer MAYBE today") 
     .bind(MyBean::getRadioSelection, MyBean::setRadioSelection); 
binder.addValueChangeListener(v -> binder.validate()); 

Également lu dans Book of Vaadin about validation.

Enum utilisé dans l'exemple est

public enum RadioSelection { 
    YES, NO, MAYBE 
}