Ошибка Could not resolve property path при использовании точки в коде атрибута

Если в коде динамического атрибута использовали точку, то при открытии экрана, на который назначен этот атрибут получим ошибку.

2024-10-04_180403

Caused by: java.lang.IllegalStateException: Could not resolve property path '+Новый.Атрибут' in 'simpledoc$Contract'
	at io.jmix.core.MetadataTools.resolveMetaPropertyPath(MetadataTools.java:974) ~[jmix-core-1.5.999-SNAPSHOT.jar:na]
	at io.jmix.dynattrui.impl.BaseEmbeddingStrategy.checkPermissions(BaseEmbeddingStrategy.java:121) ~[jmix-dynattr-ui-1.5.999-SNAPSHOT.jar:na]
	at io.jmix.dynattrui.impl.BaseEmbeddingStrategy.lambda$findVisibleAttributes$1(BaseEmbeddingStrategy.java:109) ~[jmix-dynattr-ui-1.5.999-SNAPSHOT.jar:na]

Проблема обнаружена после обновления БД клиента после миграции приложения на с Cuba на Jmix 1.5.5.

В Cuba проблемы с точкой в коде динамического атрибута не было. У клиента таких атрибутов немало.

В JMIX атрибут с таким кодом в UI создать можно, но в итоге получим описанную ошибку при открытии экрана с данным атрибутом.

В коде динамического атрибута Jmix точка недопустима но это не обрабатывается в UI в Jmix и не учтено в чендж-логе миграции?

Или точка допустима и это баг MetadataTools#resolveMetaPropertyPath?

Привет,

Да, проблема в точке, которая трактуется кодом вычисляющим адрес свойства как разделитель.

В версии 2.х уже сделана валидация для поля code, которая разрешает только латиницу, цифры и символ _. Поэтому если вы хотите решить проблему, а не отложить, то коды надо попробовать переименновать в соответствии с этими требованиями.
Поскольку схема данных не меняется, миграции тут никакие не задействованы. Однако, когда я пробовал переименновывать атрибуты локально, то значения, этих полей у меня сохранялись, но отображались только после перезапуска приложения, так что возможно, что это вполне решаемая задача. Тем не менее стоит сделать сначала резервные копии данных и быть готовым к ним откатиться.

завел задачу на добавление проверки и предупреждения: Add validation for DynamicAttributes code values in 1.x · Issue #3761 · jmix-framework/jmix · GitHub

1 симпатия

Благодарю, тогда будем тестировать переименование значений атрибута.