Skip to main content

Миграция с 7.13 на 7.14

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

  • Атрибут backdrop-closable в <open-drawer> заменен на close-on-backdrop.

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

  • Добавлена зависимость org.openjdk.nashorn:nashorn-core для поддержки javaScript вычислений на сервере с java 15
  • Повышена минимальная версия java, на которой работает N2O, до 11.

Изменения функциональности

  • Для фильтрации зависимых виджетов (depends-on), необходимо заполнить detail-field-id или прописать pre-filters. В прежних версиях фильтрация работала и без detail-field-id.

  • Убрана неявная фильтрация виджетов, если параметр URL страницы совпадает с filter-id выборки виджета. Например:

<open-page page-id="card" route="/:id/update">
<path-param name="id" value="{id}"/> <!-- передаем параметр id -->
</open-page>

Если на странице card в выборке был фильтр id, то раньше фильтрация сработала бы неявно, сейчас этого не произойдет!

Необходимо задать pre-filters на странице card явно:

<form query-id="cards">
...
<pre-filters>
<eq field-id="id" param="id"/> <!-- берем параметр id из URL и фильтруем форму -->
</pre-filters>
</form>

Хорошей практикой будет не давать path параметрам страницы простых имен, таких как id, совпадающее с фильтрами выборки. Лучше дать им имена с префиксом сущности: document_id.

! Замечание: так как данные изменения, могут повлечь за собой много багов и усложняют переход на новую версию, введена временная настройка n2o.config.filter.old_mode если указать значение true, то фильтрация будет работать в старом режиме. Данная настройка будет убрана в версии 7.16, поэтому ее использование не желательно.

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

  • Добавлена настройка n2o.config.fail_fast, которая в значении false позволит не падать приложению при отсутствии значения настройки в момент чтения xml файлов. По умолчанию true.

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

  • Создан класс AbstractFilteredPageBinder для упрощения биндинга конкретных страниц. Пример использования:
@Component
class MyPageBinder extends AbstractFilteredPageBinder {
public MyPageBinder() {
super("myPage");///Идентификатор конкретной страницы
}

@Override
public Page bind(Page page, BindProcessor p) {
//Изменение myPage
}
}