Добрый вечер,
В TypedTextField
возникает исключение DateTimeParseException
при установке значения с типом LocalDate
.
Код для воспроизведения проблемы:
var field = uiComponents.create(TypedTextField.class);
field.setDatatype(datatypeRegistry.get(LocalDate.class));
field.setTypedValue(LocalDate.now());
buttonsPanel.add(field);
Stacktrace:
java.time.format.DateTimeParseException: Text '07/10/2024' could not be parsed at index 0
at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2052)
at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1954)
at java.base/java.time.LocalDate.parse(LocalDate.java:430)
at io.jmix.core.metamodel.datatype.impl.LocalDateDatatype.parse(LocalDateDatatype.java:48)
at io.jmix.core.metamodel.datatype.impl.LocalDateDatatype.parse(LocalDateDatatype.java:30)
at io.jmix.flowui.component.textfield.TypedTextField.convertToModel(TypedTextField.java:326)
at io.jmix.flowui.component.delegate.AbstractFieldDelegate.executeValidators(AbstractFieldDelegate.java:144)
at io.jmix.flowui.component.delegate.AbstractFieldDelegate.validatorsPassed(AbstractFieldDelegate.java:275)
at io.jmix.flowui.component.delegate.AbstractFieldDelegate.updateInvalidState(AbstractFieldDelegate.java:255)
at io.jmix.flowui.component.textfield.TypedTextField.validate(TypedTextField.java:111)
at com.vaadin.flow.component.textfield.TextField.lambda$new$73c563fa$1(TextField.java:80)
at io.jmix.flowui.component.textfield.TypedTextField.lambda$addValueChangeListener$93653879$1(TypedTextField.java:200)
at com.vaadin.flow.component.internal.AbstractFieldSupport.lambda$addValueChangeListener$828eca10$1(AbstractFieldSupport.java:98)
at com.vaadin.flow.component.ComponentEventBus.fireEventForListener(ComponentEventBus.java:239)
at com.vaadin.flow.component.ComponentEventBus.fireEvent(ComponentEventBus.java:228)
at com.vaadin.flow.component.Component.fireEvent(Component.java:411)
at io.jmix.flowui.component.textfield.TypedTextField.fireTextFieldValueChangeEvent(TypedTextField.java:275)
at io.jmix.flowui.component.textfield.TypedTextField.fireAllValueChangeEvents(TypedTextField.java:259)
at io.jmix.flowui.component.textfield.TypedTextField.setValueInternal(TypedTextField.java:189)
at io.jmix.flowui.component.textfield.TypedTextField.setTypedValue(TypedTextField.java:169)
at com.company.jmix_issues.view.user.UserListView.onInit(UserListView.java:34)
...
Вероятно проблема возникает из-за ошибки в методе LocalDateDatatype#parse
. Там в вызове LocalDate.parse
используется formatter
вместо getDateTimeFormatter(formatStrings, locale)
.
Версия jmix - 2.2.4.