Проблема в том что сериализация даты/времени в URL-параметр не учитывает миллисекунды.
Самое простое решение: открывать экран деталей в диалоговом окне, тогда URL не используется:
<action id="editAction" type="list_edit">
<properties>
<property name="openMode" value="DIALOG"/>
</properties>
</action>
Если нужно открывать экран через URL, то придется переопределить бин UrlParamSerializer.
Создайте класс-наследник и переопределите в нем методы serializeOffsetDateTime и parseOffsetDateTime:
package ru.dgtserv.tsproblem;
import io.jmix.core.Metadata;
import io.jmix.core.MetadataTools;
import io.jmix.flowui.UiNavigationProperties;
import io.jmix.flowui.app.propertyfilter.dateinterval.DateIntervalSupport;
import io.jmix.flowui.view.navigation.UrlParamSerializer;
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
public class MyUrlParamSerializer extends UrlParamSerializer {
protected static final DateTimeFormatter MY_OFFSET_DATE_TIME_FORMATTER
= DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH-mm-ss.nnnnnnnnnZ");
public MyUrlParamSerializer(UiNavigationProperties navigationProperties,
MetadataTools metadataTools,
Metadata metadata,
DateIntervalSupport dateIntervalSupport) {
super(navigationProperties, metadataTools, metadata, dateIntervalSupport);
}
@Override
protected String serializeOffsetDateTime(OffsetDateTime value) {
return MY_OFFSET_DATE_TIME_FORMATTER.format(value);
}
@Override
protected OffsetDateTime parseOffsetDateTime(String stringValue) {
return OffsetDateTime.parse(stringValue, MY_OFFSET_DATE_TIME_FORMATTER);
}
}
Затем зарегистрируйте его как бин:
@SpringBootApplication
public class TsproblemApplication implements AppShellConfigurator {
// ...
@Primary
@Bean
UrlParamSerializer urlParamSerializer(UiNavigationProperties navigationProperties,
MetadataTools metadataTools,
Metadata metadata,
DateIntervalSupport dateIntervalSupport) {
return new MyUrlParamSerializer(navigationProperties, metadataTools, metadata, dateIntervalSupport);
}
Теперь URL с датой/временем будет включать наносекунды и экран деталей сможет загрузить сущность:
http://localhost:8080/datas/ts=2001-02-02T06-02-02.123456000+0400
С уважением,
Константин