Создания столбца в dataGrid с использованиям KeyValueCollectionContainer

Добрый день!

Для записей используется контейнер KeyValueCollectionContainer. Пытаюсь создать колонку в dataGrid таким путём

    nameColumns.forEach(s -> {
        responseDc.addProperty(s, String.class);
        Optional<MetaPropertyPath> checkProperty =
                Optional.ofNullable(responseDc.getEntityMetaClass().getPropertyPath(s));
        checkProperty.ifPresent(metaPropertyPath -> dataGridResponse.addColumn(s, metaPropertyPath));
    });

Возникает проблема, когда название колонки содержит точку. В методе getPropertyPath() падаю с ошибкой т.к такое название колонки “ПервоеНазвание.ВтороеНазвание” воспринимается как два отдельных, а не одно целое. Вопрос, это возможно обойти или возможно переопределить KeyValueCollectionContainer, чтоб по умолчанию использовался кастомный контейнер

Добрый день,

Выглядит так, что лучше обойтись без точек в именах, а если нужны разделения заменить их другими символами. Какого-то простого work-around не существует.

Для названия колонок нужно формировать отдельно через header-ы, вот пример доки.

С уважением,
Дмитрий

Понятно, спасибо. А если всё же путём переопределения KeyValueCollectionContainer, что нужно поменять, чтоб по умолчанию использовался класс наследник, вместо стандартной реализации. Т.к. аннотация @Primary тут не помогает

Можно переопределить бин io.jmix.flowui.model.DataComponents и в нем метод createKeyValueCollectionContainer().

С уважением,
Константин