0
我試着寫在Vaadin驗證,但我不知道如何檢查,如果日期字段爲空Vaadin驗證日期,而不是空
我寫了這樣的事情
@Override
public void setConfiguration(EditorConfiguration editorConfiguration) {
boolean required = ((DateFieldConfiguration) editorConfiguration).isRequired();
if (required == true) {
setRequiredIndicatorVisible(true);
addValueChangeListener(event -> validate(event.getSource().getDefaultValidator(), event.getValue()));
}
}
private void validate(Validator<LocalDate> defaultValidator, LocalDate localDate) {
binder.forField(this).withValidator(validator).asRequired("Mandatory").bind(s -> getValue(),
(b, v) -> setValue(v));
}
我已經achived一個驗證與文本字段:
字符串驗證碼
public class VaadinStringEditor extends TextField implements HasValueComponent<String> {
/**
*
*/
private static final long serialVersionUID = 6271513226609012483L;
private Binder<String> binder;
@PostConstruct
public void init() {
setWidth("100%");
binder = new Binder<>();
}
@Override
public void initDefaults() {
setValue("");
binder.validate();
}
@Override
public void setConfiguration(EditorConfiguration editorConfiguration) {
Validator<String> validator = ((TextFieldConfiguration) editorConfiguration).getValidator();
if (validator != null) {
binder.forField(this).withValidator(validator).asRequired("Mandatory").bind(s -> getValue(),
(b, v) -> setValue(v));
}
,我有效的在這裏:
question.setEditorConfiguration(new TextFieldConfiguration(textRequiredValidator()));
驗證:
private Validator<String> textRequiredValidator() {
return Validator.from(v -> v != null && StringUtils.trimAllWhitespace((String) v).length() != 0,
, "Not empty");
}
根據[Vaadin文檔](https://vaadin.com/docs/v8/framework/datamodel/datamodel-forms.html#datamodel.forms.validation),一旦設置了字段'asRequired(message) '(或添加其他驗證器之後),您可以在_Ok_按鈕中單擊偵聽器(或您在其中的任何位置)調用'binder.validate()'。你卡在哪裏? – Morfic
我不知道如何獲取LocalDate並檢查它是否爲空binder.forField(this).withValidator(validator).asRequired(「Mandatory」)。bind(s - > getValue(), (b,v) - > setValue(v));你知道如何爲localDate寫驗證器嗎 –
你讀過文檔嗎?這不是你必須檢查價值。活頁夾將使用已定義的驗證器來檢查值,如果它們全部通過,則更新綁定bean上的值。 – Morfic