diff options
-rw-r--r-- | server/src/main/java/com/vaadin/ui/AbstractDateField.java | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/server/src/main/java/com/vaadin/ui/AbstractDateField.java b/server/src/main/java/com/vaadin/ui/AbstractDateField.java index 83db0ff905..e9cc87359d 100644 --- a/server/src/main/java/com/vaadin/ui/AbstractDateField.java +++ b/server/src/main/java/com/vaadin/ui/AbstractDateField.java @@ -201,26 +201,29 @@ public abstract class AbstractDateField<T extends Temporal & TemporalAdjuster & T newDate; + boolean hasChanges = false; + if ("".equals(newDateString)) { newDate = null; + hasChanges = !uiHasValidDateString; uiHasValidDateString = true; currentParseErrorMessage = null; } else { newDate = reconstructDateFromFields(variables, oldDate); } - boolean hasChanges = !Objects.equals(dateString, newDateString) || + hasChanges |= !Objects.equals(dateString, newDateString) || !Objects.equals(oldDate, newDate); if (hasChanges) { dateString = newDateString; if (newDateString != null && !newDateString.isEmpty()) { - String invalidDateString = (String) variables.get("lastInvalidDateString"); - if (invalidDateString != null) { + if (variables.get("lastInvalidDateString") != null) { Result<T> parsedDate = handleUnparsableDateString(dateString); parsedDate.ifOk(this::setValue); if (parsedDate.isError()) { - uiHasValidDateString = true; + doSetValue(null); + uiHasValidDateString = false; currentParseErrorMessage = parsedDate.getMessage().orElse("Parsing error"); setComponentError(new UserError(getParseErrorMessage())); } |