NullPointerException в SettingsFacet

Добрый день,

В SettingsFacet возникает ошибка NullPointerException в случае, если экран содержит dataGrid, в котором есть колонки без ключа.

Шаги для воспроизведения проблемы:

  1. Добавить settings facet в list view (например, user-list-view.xml).
  2. Добавить editorActionsColumn в dataGrid, не указывая ключ колонки (как в примере из документации).
  3. Открыть view два раза.

Результат - NullPointerException.

Stacktrace:

java.lang.NullPointerException
	at java.base/java.util.Objects.requireNonNull(Objects.java:209)
	at io.jmix.flowui.facet.settings.component.binder.AbstractGridSettingsBinder.applySettings(AbstractGridSettingsBinder.java:59)
	at io.jmix.flowui.facet.settings.component.binder.AbstractGridSettingsBinder.applySettings(AbstractGridSettingsBinder.java:37)
	at io.jmix.flowuidata.settings.ViewSettingsComponentManagerImpl.applySettings(ViewSettingsComponentManagerImpl.java:68)
	at io.jmix.flowui.facet.impl.SettingsFacetImpl.applyViewSettings(SettingsFacetImpl.java:305)
	at io.jmix.flowui.facet.impl.SettingsFacetImpl.applySettings(SettingsFacetImpl.java:105)
	at io.jmix.flowui.facet.impl.SettingsFacetImpl.onViewReady(SettingsFacetImpl.java:283)
	at io.jmix.flowui.facet.impl.SettingsFacetImpl$ViewEventListener.lambda$subscribe$9b1b5227$1(SettingsFacetImpl.java:401)
	at com.vaadin.flow.component.ComponentEventBus.fireEventForListener(ComponentEventBus.java:233)
	at com.vaadin.flow.component.ComponentEventBus.fireEvent(ComponentEventBus.java:222)
	at com.vaadin.flow.component.Component.fireEvent(Component.java:411)
	at io.jmix.flowui.view.View.afterNavigation(View.java:98)
...

Для исправления проблемы нужно добавить атрибут key для editorActionsColumn. Возможно в SettingsFacet стоит реализовать корректную обработку такой ситуации (колонок без ключа).

Добрый день!

Возможно в данном случае не совсем очевидно, что нужно для editActionsColumn добавлять key, но именно так и работают settings для DataGrid. Без key идентифицировать колонку не получится и соответственно не получится сохранить порядок колонок.

Я добавил задачу подумать как автоматизировать или сделать более очевидным добавление key. Возможно также стоит изменить exception на более понятный.

Make editorActionsColumn automatically compatible with settings facet without explicit actions · Issue #2793 · jmix-framework/jmix · GitHub.

1 симпатия