Ошибка при форматировании выходного параметра с использованием groovy скрипт

Здравствуйте!
После обновления Jmix до версии 2.2.1 вылетает ошибка:
error
Нет идей как с этим бороться. Может кто-то уже столкнулся с данной проблемой. Помогите, пожалуйста, разобраться.

Здравствуйте,

Не удалось воспроизвести проблему, попробовал на чистом и мигрированном с 2.1.x проекте.

Возможно проблема в build файлах. Попробуйте вызвать gradle-команды:

gradle clean vaadinClean

С Уважением,
Никита

Спасибо, попробовали. Та же ошибка при формировании отчёта
cleanvaadin

Данная проблема у вас воспроизводится на новом чистом проекте?

Если есть возможность, пришлите пожалуйста демо-проект с отчётом, в котором воспроизводиться данная проблема.

С Уважением,
Никита

Да. И в новом чистом проекте такая ошибка

Microsoft OneDrive

Спасибо за проект, отловил проблему. Завел тикет, в ближайшем багафикс релизе исправим.

На текущий момент могу предложить следующий workaround:

Необходимо создать спринг бин CustomDocxFormatter:

CustomDocxFormatter.class

@Component("report_CustomDocxFormatter")
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
public class CustomDocxFormatter extends DocxFormatter {

    public CustomDocxFormatter(FormatterFactoryInput formatterFactoryInput) {
        super(formatterFactoryInput);
    }

}

И переопределить фабрику следующим образом:

CustomJmixFormatterFactory.class

public class CustomJmixFormatterFactory extends JmixFormatterFactory {

    public CustomJmixFormatterFactory() {
        super();
        FormatterCreator ftlCreator = factoryInput -> {
            HtmlFormatter htmlFormatter = beanFactory.getBean(JmixHtmlFormatter.class, factoryInput);
            htmlFormatter.setDefaultFormatProvider(defaultFormatProvider);
            htmlFormatter.setScripting(scripting);
            return htmlFormatter;
        };
        formattersMap.put("ftl", ftlCreator);
        formattersMap.put("html", ftlCreator);

        FormatterCreator docxCreator = factoryInput -> {
            DocxFormatter docxFormatter = beanFactory.getBean(CustomDocxFormatter.class, factoryInput);
            docxFormatter.setDefaultFormatProvider(defaultFormatProvider);
            if (useOfficeForDocumentConversion) {
                docxFormatter.setDocumentConverter(documentConverter);
            }
            docxFormatter.setHtmlImportProcessor(htmlImportProcessor);
            docxFormatter.setScripting(scripting);
            return docxFormatter;
        };

        formattersMap.put("docx", docxCreator);
        formattersMap.put("chart", factoryInput -> beanFactory.getBean(ChartFormatter.class, factoryInput));
        formattersMap.put("pivot", factoryInput -> beanFactory.getBean(PivotTableFormatter.class, factoryInput));

        FormatterCreator xlsxCreator = factoryInput -> {
            XlsxFormatter xlsxFormatter = beanFactory.getBean(JmixXlsxFormatter.class, factoryInput);
            xlsxFormatter.setDefaultFormatProvider(defaultFormatProvider);
            xlsxFormatter.setDocumentConverter(documentConverter);
            xlsxFormatter.setScripting(scripting);
            xlsxFormatter.setFormulasPostProcessingEvaluationEnabled(reportsProperties.isFormulasPostProcessingEvaluationEnabled());
            return xlsxFormatter;
        };
        formattersMap.put("xlsx", xlsxCreator);

        formattersMap.put("table", factoryInput -> beanFactory.getBean(JmixTableFormatter.class, factoryInput));
    }
}

JmixFormatterFactory.class

    @Primary
    @Bean("report_CustomFormatterFactory")
    public JmixFormatterFactory formatterFactory(JmixInlinersProvider inlinersProvider,
                                                 JmixFieldFormatProvider fieldFormatProvider,
                                                 Scripting scripting,
                                                 JmixOfficeIntegration officeIntegration) {
        CustomJmixFormatterFactory formatterFactory = new CustomJmixFormatterFactory();
        formatterFactory.setUseOfficeForDocumentConversion(reportsProperties.isUseOfficeForDocumentConversion());
        formatterFactory.setInlinersProvider(inlinersProvider);
        formatterFactory.setDefaultFormatProvider(fieldFormatProvider);
        formatterFactory.setOfficeIntegration(officeIntegration);
        formatterFactory.setScripting(scripting);
        return formatterFactory;
    }

Прикладываю ваш демо проект с исправление:
demo.zip (110.7 КБ)

С Уважением,
Никита

Спасибо и Вам! Ждём обновления