SearchField 全文搜索

该组件需要安装免费版 搜索 扩展组件。

searchField 组件由一个文本输入字段和执行、配置全文搜索的控件组成。

XML 元素

searchField

Java 类

SearchField

基本用法

在视图 XML 中声明 search 命名空间:

<view xmlns="http://jmix.io/schema/flowui/view"
      xmlns:search="http://jmix.io/schema/search/ui"
      title="msg://searchView.title">

当使用顶部操作面板中的 Add Component 操作添加组件时,Studio 会自动添加该命名空间。请参见 组件面板。

然后在视图中添加 searchField:

<search:searchField id="searchField"/>
search field

运行时配置

searchField 包含一个 设置按钮(垂直省略号 ⋮),点击该按钮会打开一个配置对话框,用户可以在不修改 XML 的情况下动态调整搜索参数。

search settings dialog

用户可以在运行时配置以下选项:

配置 对应属性 描述

Search Strategy(搜索策略)

searchStrategy

确定搜索词的处理方式

Size(数量)

searchSize

限制搜索结果的数量

Entities(实体)

entities

指定要搜索的实体(可以选择多个实体)

隐藏配置按钮

可以使用 settingsButtonVisible 属性隐藏配置按钮。

<search:searchField id="searchCustomerField"
                    settingsButtonVisible="false"/>

搜索结果视图

默认情况下,searchField 会打开内置的 SearchResultsView。该视图处理搜索引擎的查询过程,并根据 openMode 属性,在当前导航视图或对话框中显示结果。

如需修改此行为,需要配置一个 SearchCompletedHandler。可以通过 @Install 注解以声明方式,或使用 setSearchCompletedHandler() 以编程方式配置。

使用 @Install 的示例:

@Autowired
private DialogWindows dialogWindows;

@ViewComponent
private SearchField searchField;

@Install(to = "searchField", subject = "searchCompletedHandler")
private void searchFieldSearchCompletedHandler(
        final SearchField.SearchCompletedEvent event) {
    DialogWindow<SearchResultsView> searchResultsDialog =
            dialogWindows.view(UiComponentUtils.getView(this),
                            SearchResultsView.class)
                    .build();
    SearchResultsView view = searchResultsDialog.getView();
    view.initView(new SearchFieldContext(searchField));
    searchResultsDialog.open();
}

XML 属性

下面是 searchField 的特殊属性:

名称 描述 默认值

entities

指定要搜索的实体。多个实体可以用逗号分隔。

<search:searchField id="searchField"
                    entities="Customer, Order_"/>

-

openMode

指定 搜索结果视图 的打开模式。NAVIGATION 在主窗口打开;DIALOG 在模态窗打开。

NAVIGATION

searchButtonVisible

设置是否显示搜索按钮。

true

searchSize

设置搜索结果中一页显示的结果数量。

默认使用 jmix.search.search-result-page-size 的配置。

searchStrategy

设置搜索策略。参阅 搜索策略。

anyTermAnyField

settingsButtonVisible

设置是否显示设置按钮(⋮)。参阅 运行时配置。

true

下面是 searchField 支持的其他通用属性:

事件和处理器

下面是 searchField 的特殊事件和处理器:

在 Jmix Studio 生成处理器桩代码时,可以使用 Jmix UI 组件面板的 Handlers 标签页或者视图类顶部面板的 Generate Handler 添加,也可以通过 Code → Generate 菜单(Alt+Insert / Cmd+N)生成。

名称 描述

searchCompletedHandler

搜索完成事件。SearchCompletedEvent 事件中包含搜索结果。参考 搜索结果视图。

下面是 searchField 支持的其他通用事件: