Skip to main content

Миграция с 7.28 на 7.29

7.29.0

Изменения в сборке

  • Версия NodeJS повышена до 20 (с поддержкой 22)
  • Версия Java повышена с 17 на 21
  • Версия Spring Boot повышена с 3.2.2 на 3.5.3

Изменения в XML API

  • Упразднены устаревшие схемы: query-4.0, application-2.0, page-3.0, n2o-widget-4.0, region-2.0, fieldset-4.0, toolbar-base-1.0, button-1.0, action-1.0, control-2.0, n2o-cell-2.0, properties-base-1.0 с сохранением обратной совместимости.

  • Добавлена новая схема table-settings-1.0 для задания настроек таблицы. Генерация кнопок с настройками с помощью атрибута generate объявлена устаревшей и удалена.

Пример, как работало в версии 7.28 и ниже
<simple-page xmlns="http://n2oapp.net/framework/config/schema/page-4.0"
xmlns:gen="http://n2oapp.net/framework/config/schema/gen-attr">
<table>
...
<toolbar>
<sub-menu generate="tableSettings"/>

<sub-menu icon="fa fa-gear">
<menu-item generate="filters"/>
<menu-item generate="columns" gen:defaultColumns="name, type"/>
</sub-menu>
</toolbar>
</table>
</simple-page>
Пример, как работает в версии 7.29
<simple-page xmlns="http://n2oapp.net/framework/config/schema/page-4.0"
xmlns:ts="http://n2oapp.net/framework/config/schema/table-settings-1.0">
<table>
...
<toolbar>
<sub-menu icon="fa fa-gear">
<ts:filters/>
<ts:columns/>
<ts:refresh/>
<ts:resize/>
<ts:word-wrap/>
<ts:export/>
</sub-menu>

<sub-menu icon="fa fa-gear">
<ts:filters/>
<ts:columns default-value="name, type"/>
</sub-menu>
</toolbar>
</table>
</simple-page>
  • Идентификатор колонок таблиц больше не будет отображаться в заголовке. Это означает, что больше нет необходимости использовать запись <column text-field-id=""> или <column label=""/> для задания пустого заголовка.

  • Добавлена проверка на несовместимость атрибутов fetch-on-change="true" и fetch-on-clear="false" фильтров таблицы.

  • Упразднена страница <searchable-page>.

  • Прекращена поддержка <left-right-page>, <top-left-right-page> с сохранением обратной совместимости. В будущих версиях эти элементы будут удалены.

Пример, как работало в версии 7.28 и ниже
<left-right-page xmlns="http://n2oapp.net/framework/config/schema/page-4.0">
<left width="80%">
<panel title="Регион 1">...</panel>
<panel title="Регион 2">...</panel>
</left>

<right width="20%">
<panel title="Регион 3">...</panel>
</right>
</left-right-page>
Пример, как аналогичное будет выглядеть в версии 7.29
<page xmlns="http://n2oapp.net/framework/config/schema/page-4.0">
<regions>
<flex-row>
<region style="width: 80%">
<panel title="Регион 1">...</panel>
<panel title="Регион 2">...</panel>
</region>

<panel title="Регион 3" style="width: 20%">...</panel>
</flex-row>
</regions>
</page>

Изменения в Java API

  • Всем enum в названии был проставлен суффикс Enum. Так, например, BadgePosition был переименован в BadgePositionEnum.

Изменения в Data API

  • Изменен запрос для экспорта данных.
Старая версия: GET запрос
?format=xlsx&charset=utf8&url=/sandbox/view/4oYjK/n2o/data/_ds?page=1%26size=5%26show=name%26show=region
Новая версия: POST запрос
{
"format": "xlsx",
"charset": "utf8"
"url": "/sandbox/view/4oYjK/n2o/data/_ds?page=1&size=5"
"fields": [
"name": "Наименование",
"region": "Регион"
]
}

Имена колонок будут браться непосредственно из UI. Задавать имена явно в полях query.xml необязательно.

Изменения в настройках

  • Изменено значение по умолчанию для настройки n2o.access.filtering_for_unique на true.
    Это означает, что теперь по умолчанию во все запросы с size=1 будут добавлены фильтры <object-filters> из access схемы. Рекомендуем учесть, что в будущих версиях поддержка данной настройки прекратится.

7.29.5

Изменения в Java API

  • Для обработки разных конструкторов критериев был введен класс CriteriaConstructorFactory. Теперь для подключения своих конструкторов нет необходимости переопределять бин N2oQueryProcessor. Достаточно реализовать интерфейс CriteriaConstructor, сделав реализацию бином.
@Component
public class MyCriteriaConstructor implements CriteriaConstructor<MyCriteria> {

private final boolean pageStartsWith0;

public N2oCriteriaConstructor(@Value("${n2o.engine.pageStartsWith0:false}") boolean pageStartsWith0) {
this.pageStartsWith0 = pageStartsWith0;
}

@Override
public Class<MyCriteria> getCriteriaClass() {
return MyCriteria.class;
}

@Override
public MyCriteria construct(N2oPreparedCriteria criteria, MyCriteria instance) {
instance.addSorting(criteria.getSorting());
instance.setSize(criteria.getSize());
instance.setPage(pageStartsWith0 ? criteria.getPage() - 1 : criteria.getPage());
instance.setCount(criteria.getCount());
return instance;
}
}

Более того, если в вашем проекте переопределялся N2oQueryProcessor, то его следует, либо удалить, либо задавать в нем CriteriaConstructorFactory вместо CriteriaConstructor.

7.29.6

Изменения в XML API

  • Добавлена проверка, которая после действия <close> разрешает указывать только действия <close> или <on-fail>

7.29.7

Изменения в настройках

  • Добавлена настройка n2o.api.control.dependency.on.auto=false для автоматического заполнения атрибута on по выражению в теле зависимости. Напоминаем, что без заполнения данного атрибута зависимость не будет работать корректно.
    Для большего контроля все же рекомендуется не устанавливать настройку в true, а вручную указывать значения атрибута on