Расширение WebDataGrid

Доброго дня.

Подскажите, пожалуйста, как правильно расширить WebDataGrid?
Добавлять в экран декларативно не планирую, только программное создание и добавление. Заменять родную реализацию тоже нет необходимости.

Достаточно ли будет просто расширить сам WebDataGrid? Если да, то подскажите, каким образом правильно проинициализировать компонент, поскольку uiComponents.create() мы уже использовать для создания не сможем.

        final MatrixDataGrid<AccountCostCP> matrixDataGrid = new MatrixDataGrid();
        matrixDataGrid.setMetadataTools(metadataTools);
        matrixDataGrid.setMessageTools(messageTools);
        matrixDataGrid.setSecurity(security);

Дошел до такого варианта с отладчиком, но это этого оказалось недостаточно. Сейчас падаю в NPE при инициализации ContextMenu.

Благодарю.

Добрый день,

можно попробовать следующее:

  1. Создать наследника компонента.
public interface ExtDataGrid<E extends Entity> extends DataGrid<E> {
    String NAME = "extDataGrid";
}

public class WebExtDataGrid<E extends Entity> extends WebDataGrid<E> implements ExtDataGrid<E> {
}

  1. Создать файл ui-components.xml и зарегистрировать в нём наследованный компонент.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<components xmlns="http://schemas.haulmont.com/cuba/components.xsd">
    <component>
        <name>extDataGrid</name>
        <class>com.company.demo.web.component.WebExtDataGrid</class>
    </component>
</components>
  1. В web-app.properties указать данный файл как дополнительную конфигурацию компонентов:
cuba.web.componentsConfig = +com/company/demo/web/ui-components.xml

Дальше можно создавать через UiComponents:

ExtDataGrid extDataGrid = uiComponents.create(ExtDataGrid.NAME);
1 симпатия