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