Компонент FullTextFilter

Компонент FullTextFilter функционирует аналогично компоненту propertyFilter, но выполняет полнотекстовый поиск по индексированным полям сущностей.

XML-элемент

fullTextFilter

Java-класс

io.jmix.searchflowui.component.FullTextFilter

Атрибуты

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

Элементы

validator

Основы

Чтобы добавить компонент на экран, используйте Jmix Studio.

Нажмите Add Component на панели действий, затем найдите элемент Full-text filter и дважды кликните по нему.

create full text filter component

Поскольку атрибут 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 работает следующим образом:

  1. Выполняет полнотекстовый поиск для нахождения идентификаторов сущностей, соответствующих критериям поиска.

  2. Добавляет условие, содержащее эти идентификаторы, к связанному dataLoader.

  3. Когда DataGrid (или другой компонент отображения списка) связан с этим загрузчиком данных, он отображает только те записи, которые соответствуют критериям полнотекстового поиска.

Условие полнотекстового поиска комбинируется с любыми другими фильтрами, примененными к загрузчику данных, обеспечивая уточненные наборы результатов.

Валидация

Для проверки значений, введенных в компонент fullTextFilter, можно использовать валидатор во вложенном элементе validators.

Для fullTextFilter доступны следующие предопределенные валидаторы:

XML-элемент

validators

элементы

custom - decimalMax - decimalMin - digits - doubleMax - doubleMin - email - future - futureOrPresent - max - min - negative - negativeOrZero - notBlank - notEmpty - notNull - past - pastOrPresent - positive - positiveOrZero - regexp - size

Атрибуты

Общие атрибуты служат одной и той же цели для всех компонентов. Следующие атрибуты являются специфичными для fullTextFilter:

Название Описание Значение по умолчанию

autoApply

Если установлено в true, компонент FullTextFilter автоматически применяется к DataLoader при изменении его значения.

-

dataLoader

dataLoader является обязательным атрибутом. Он задает загрузчик данных, связанный с текущим fullTextFilter.

-

searchStrategy

Определяет применяемую стратегию поиска. См. Стратегии поиска.

anyTermAnyField