Миграция с 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
}
}