2017-10-10 52 views
0

有人能告诉我,请问我如何从单选按钮中获得价值以验证它?验证Vaadin中的Radiobuttons

我想是这样的:

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); 

首先,我开始与asRequired(“强制”)验证,但我没有看到一个红色的asteriks旁边,我的领域。有人知道关于不同于字符串验证表单的好教程吗?

+1

您是否尝试过'setRequiredIndicatorVisible(真);'实现红色asteriks? 采取看看这个例子wtih [DateValidator(https://stackoverflow.com/questions/46604363/vaadin-datefield-validation-does-not-show-validation-errors/46647837#46647837) – avix

+0

@avix笔者认为应已被['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你是否在使用任何自定义主题,你能分享一个完整的例子吗?我只是使用Vaadin 8.1.5的enum做了一个快速示例,它工作得很好。另外,与验证相关的[Vaadin文档](https://vaadin.com/docs/v8/framework/datamodel/datamodel-forms.html#datamodel.forms.validation)通常是很好的信息来源。 – Morfic

回答

0

您可以使用普通验证器验证的单选按钮值。如果您使用的是枚举值,则无法验证用户输入,因为用户可以在有效值之间进行选择。

如果您想验证对其他一些领域枚举值,那么你可以添加该字段的当前值到一些其他领域的比较验证程序。如果第二个字段发生变化,请务必将值更改侦听器添加到活页夹以触发验证。

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()); 

也读于Book of Vaadin about validation。在本例中使用

ENUM是

public enum RadioSelection { 
    YES, NO, MAYBE 
}