2017-10-10 73 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 
}