Ошибка при использовании DataGridHeaderFilter

Добрый день,

При миграции на версию jmix 2.2 столкнулись со следующей проблемой. При открытии экрана возникает ошибка IllegalArgumentException в случае, если у пользователя нет прав доступа к сущности или свойству и в экране есть DataGrid с данными этой сущности и filterable columns. Если отключить filterable для колонок - ошибка пропадает. В jmix 2.1 такой проблемы не было.

Stacktrace:

java.lang.IllegalArgumentException: Cannot find a cell from this row that would correspond to the given column
	at com.vaadin.flow.component.grid.AbstractRow.lambda$getCellFor$4(AbstractRow.java:201) ~[vaadin-grid-flow-24.3.3.jar:na]
	at java.base/java.util.Optional.orElseGet(Optional.java:364) ~[na:na]
	at com.vaadin.flow.component.grid.AbstractRow.getCellFor(AbstractRow.java:195) ~[vaadin-grid-flow-24.3.3.jar:na]
	at com.vaadin.flow.component.grid.AbstractRow.getCell(AbstractRow.java:190) ~[vaadin-grid-flow-24.3.3.jar:na]
	at com.vaadin.flow.component.grid.HeaderRow.getCell(HeaderRow.java:34) ~[vaadin-grid-flow-24.3.3.jar:na]
	at com.vaadin.flow.component.grid.Grid$Column.setHeader(Grid.java:942) ~[vaadin-grid-flow-24.3.3.jar:na]
	at io.jmix.flowui.component.grid.DataGridColumn.setFilterable(DataGridColumn.java:65) ~[jmix-flowui-2.2.1.jar:na]
	at io.jmix.flowui.xml.layout.loader.component.AbstractGridLoader.lambda$loadData$1(AbstractGridLoader.java:161) ~[jmix-flowui-2.2.1.jar:na]
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) ~[na:na]
	at io.jmix.flowui.xml.layout.loader.component.AbstractGridLoader.loadData(AbstractGridLoader.java:161) ~[jmix-flowui-2.2.1.jar:na]
	at io.jmix.flowui.xml.layout.loader.component.AbstractGridLoader.loadComponent(AbstractGridLoader.java:126) ~[jmix-flowui-2.2.1.jar:na]
	at io.jmix.flowui.xml.layout.loader.container.AbstractContainerLoader.loadSubComponents(AbstractContainerLoader.java:37) ~[jmix-flowui-2.2.1.jar:na]
	at io.jmix.flowui.xml.layout.loader.container.AbstractContainerLoader.loadSubComponentsAndExpand(AbstractContainerLoader.java:74) ~[jmix-flowui-2.2.1.jar:na]
	at io.jmix.flowui.xml.layout.loader.container.AbstractLayoutLoader.loadComponent(AbstractLayoutLoader.java:46) ~[jmix-flowui-2.2.1.jar:na]
	at io.jmix.flowui.xml.layout.loader.container.AbstractContainerLoader.loadSubComponents(AbstractContainerLoader.java:37) ~[jmix-flowui-2.2.1.jar:na]
	at io.jmix.flowui.xml.layout.loader.container.SplitLayoutLoader.loadComponent(SplitLayoutLoader.java:51) ~[jmix-flowui-2.2.1.jar:na]
	at io.jmix.flowui.xml.layout.loader.container.AbstractContainerLoader.loadSubComponents(AbstractContainerLoader.java:37) ~[jmix-flowui-2.2.1.jar:na]
	at io.jmix.flowui.xml.layout.loader.container.AbstractTabLoader.loadComponent(AbstractTabLoader.java:35) ~[jmix-flowui-2.2.1.jar:na]
	at io.jmix.flowui.xml.layout.loader.container.TabSheetLoader.loadSubComponents(TabSheetLoader.java:67) ~[jmix-flowui-2.2.1.jar:na]
	at io.jmix.flowui.xml.layout.loader.container.AbstractTabsLoader.loadComponent(AbstractTabsLoader.java:33) ~[jmix-flowui-2.2.1.jar:na]
	at io.jmix.flowui.xml.layout.loader.container.TabSheetLoader.loadComponent(TabSheetLoader.java:48) ~[jmix-flowui-2.2.1.jar:na]
	at io.jmix.flowui.xml.layout.loader.container.AbstractContainerLoader.loadSubComponents(AbstractContainerLoader.java:37) ~[jmix-flowui-2.2.1.jar:na]
	at io.jmix.flowui.xml.layout.loader.container.AbstractContainerLoader.loadSubComponentsAndExpand(AbstractContainerLoader.java:74) ~[jmix-flowui-2.2.1.jar:na]
	at io.jmix.flowui.xml.layout.loader.ViewLoader.loadComponent(ViewLoader.java:75) ~[jmix-flowui-2.2.1.jar:na]
	at io.jmix.flowui.sys.ViewSupport.loadWindowFromXml(ViewSupport.java:447) ~[jmix-flowui-2.2.1.jar:na]

Версия Jmix - 2.2.1.

Добрый день!

Ошибку воспроизвёл. Проблема в том, что при обновлении заголовка (добавлении в него иконки фильтра) происходит попытка обращения к ячейке. Т.к. ячейка не доступна по условиям безопасности - она была предварительно удалена из таблицы. В этот момент и происходит ошибка.

Создал задачу по фиксу: DataGridHeaderFilter for properties that are not allowed by security leads to an error · Issue #3038 · jmix-framework/jmix · GitHub

Спасибо, что сообщили об ошибке.

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

1 симпатия