Компонент FullTextFilter
Компонент FullTextFilter функционирует аналогично компоненту propertyFilter, но выполняет полнотекстовый поиск по индексированным полям сущностей.
XML-элемент |
|
|---|---|
Java-класс |
|
Атрибуты |
id - alignSelf - ariaLabel - ariaLabelledBy - autoApply - classNames - colspan - css - dataLoader - defaultValue - enabled - errorMessage - focusShortcut - height - helperText - justifySelf - label - labelPosition - labelVisible - labelWidth - maxHeight - maxWidth - minHeight - minWidth - parameterName - readOnly - required - requiredMessage - searchStrategy - tabIndex - themeNames - visible - width |
Обработчики |
AttachEvent - BlurEvent - ComponentValueChangeEvent - DetachEvent - FocusEvent - validator |
Элементы |
Основы
Чтобы добавить компонент на экран, используйте Jmix Studio.
Нажмите Add Component на панели действий, затем найдите элемент Full-text filter и дважды кликните по нему.
Поскольку атрибут dataLoader является обязательным, Studio отобразит диалог для выбора загрузчика данных. Выберите подходящий загрузчик данных и нажмите OK.
Новый элемент fullTextFilter будет добавлен как на панель структуры Jmix UI, так и в XML-дескриптор. Вы можете настроить стандартные атрибуты (id, height, width и т.д.) так же, как и для любого другого UI-компонента.
<data>
<collection id="ordersDc"
class="com.company.demo.entity.Order">
<loader id="ordersDl"
readOnly="true">
<query>
<![CDATA[select e from Order_ e]]>
</query>
</loader>
<fetchPlan extends="_base">
<property name="customer"
fetchPlan="_base"/>
</fetchPlan>
</collection>
</data>
<facets>
<dataLoadCoordinator auto="true"/>
</facets>
<layout>
<search:fullTextFilter dataLoader="ordersDl"
autoApply="true"/>
<dataGrid id="ordersDataGrid"
width="100%"
dataContainer="ordersDc">
<columns>
<column property="number"/>
<column property="date"/>
<column property="amount"/>
<column property="product"/>
<column property="customer"/>
</columns>
</dataGrid>
</layout>
Если вы не используете дизайнер экранов, объявите пространство имен search в XML-дескрипторе вашего экрана вручную:
<view xmlns="http://jmix.io/schema/flowui/view"
xmlns:search="http://jmix.io/schema/search/ui"
title="msg://searchView.title">
Компонент FullTextFilter работает следующим образом:
-
Выполняет полнотекстовый поиск для нахождения идентификаторов сущностей, соответствующих критериям поиска.
-
Добавляет условие, содержащее эти идентификаторы, к связанному
dataLoader. -
Когда
DataGrid(или другой компонент отображения списка) связан с этим загрузчиком данных, он отображает только те записи, которые соответствуют критериям полнотекстового поиска.
Условие полнотекстового поиска комбинируется с любыми другими фильтрами, примененными к загрузчику данных, обеспечивая уточненные наборы результатов.
Валидация
Для проверки значений, введенных в компонент fullTextFilter, можно использовать валидатор во вложенном элементе validators.
Для fullTextFilter доступны следующие предопределенные валидаторы:
XML-элемент |
|
|---|---|
элементы |
custom - decimalMax - decimalMin - digits - doubleMax - doubleMin - email - future - futureOrPresent - max - min - negative - negativeOrZero - notBlank - notEmpty - notNull - past - pastOrPresent - positive - positiveOrZero - regexp - size |
Атрибуты
Общие атрибуты служат одной и той же цели для всех компонентов.
Следующие атрибуты являются специфичными для fullTextFilter:
| Название | Описание | Значение по умолчанию |
|---|---|---|
Если установлено в |
- |
|
|
- |
|
Определяет применяемую стратегию поиска. См. Стратегии поиска. |
|