Использование модели в приложении

Добрый день. В процессе изучение jmix возник следующий вопрос. Планирую реализовать кастомное выделение элементов в таблице через checkBox в каждой ячейке и один checkBox “Выделить все” в заголовке. Предполагаю, что нужно расширить JPA сущность привязанную к таблице, добавив туда св-во selected, но верно ли туда добавлять св-во, которое нужно только для выделения в конкретной таблице? И где правильно хранить св-во selected для checkBox “Выделить все”? И в целом, как правильно хранить состояние всех компонентов экрана?

Добрый день!
Предлагаю тут посмотреть

1 симпатия

Спасибо, частично помогло, а как верно задавать единичные свойства? В примере имеется коллекция и к ней добавили св-во selected. А мне допустим нужно св-во для единственного чекбокса или допустим св-во для цвета кнопки или css стиля. Как пример JavaScript объект к которому я бы мог привязать что угодно.

Вовсе не обязательно хранить состояние экрана в сущностях. Можно просто в полях самого экрана:

<groupTable id="departmentsTable"
            width="100%"
            dataContainer="departmentsDc">
    <columns>
        <column id="selected" caption="Selected"/> <!--  generated column -->
        <column id="name"/>
        <column id="hrManager"/>
    </columns>
...
@Autowired
private UiComponents uiComponents;

private Map<Department, Boolean> selected = new HashMap<>();

@Install(to = "departmentsTable.selected", subject = "columnGenerator")
private Component departmentsTableSelectedColumnGenerator(Department department) {
    CheckBox checkBox = uiComponents.create(CheckBox.class);

    checkBox.setValue(selected.containsKey(department));

    checkBox.addValueChangeListener(booleanValueChangeEvent -> {
        Boolean value = booleanValueChangeEvent.getValue();
        if (Boolean.TRUE.equals(value)) {
            selected.put(department, true);
        } else {
            selected.remove(department);
        }
    });

    return checkBox;
}

Добавляйте компоненты на экран, и в их обработчиках ValueChangeEvent сохраняйте значения в полях экрана. Если вам не нужно сохранять эти значения, то привязка к сущностям модели данных не нужна.

2 симпатии