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 для упрощения биндинга конкретных страниц. Пример использования:
@Componentclass MyPageBinder extends AbstractFilteredPageBinder {    public MyPageBinder() {        super("myPage");///Идентификатор конкретной страницы    }
    @Override    public Page bind(Page page, BindProcessor p) {        //Изменение myPage    }}