Skip to content

自动完成 AUTO_COMPLETE

带输入联想功能的文本框,用户输入时动态匹配候选项,选项通过实现 AutoCompleteHandler 提供。

auto-complete

基础用法

java
@EruptField(
    edit = @Edit(title = "自动完成", type = EditType.AUTO_COMPLETE,
                 autoCompleteType = @AutoCompleteType(
                     handler = MyAutoCompleteHandler.class
                 ))
)
private String autoComplete;

动态列表 MyModel 2.0.0+

实现 AutoCompleteHandler<T> 提供候选项。泛型 T 为当前 Erupt 实体类(约定命名为 MyModel),可通过 model 读取同表单其他字段值实现联动:

java
@Component
public class MyAutoCompleteHandler implements AutoCompleteHandler<MyModel> {

    @Override
    public List<Object> completeHandler(MyModel model, String val, String[] param) {
        // val:用户当前输入值
        // model:当前表单对象,可读取其他字段值进行联动过滤
        String category = model.getCategory();
        return productService.searchByCategory(category, val);
    }

}

2.0.0+:编辑表单中 AUTO_COMPLETE 字段旁新增刷新按钮,可按需重新拉取候选项。

静态候选项 v2.2.0+

候选项固定时无需写 Handler,直接用 values 列出即可,输入时按不区分大小写匹配:

java
@EruptField(
    views = @View(title = "国家"),
    edit = @Edit(title = "国家", type = EditType.AUTO_COMPLETE,
                 autoCompleteType = @AutoCompleteType(values = {"中国", "美国", "日本", "德国"}))
)
private String country;

valueshandler 可以同时配置,最终候选项为两者合并的结果。2.2.0 起 handler 不再是必填项。

配置项

java
public @interface AutoCompleteType {

    // 预置候选项,按不区分大小写匹配输入,与 handler 结果合并(2.2.0+)
    String[] values() default {};

    // 候选项处理器;2.2.0 起可省略(默认值 AutoCompleteHandler.class 表示不使用 Handler)
    Class<? extends AutoCompleteHandler> handler() default AutoCompleteHandler.class;

    String[] param() default {}; // 传递给 handler 的参数

    int triggerLength() default 1; // 触发联想的最小输入长度

}

贡献者

The avatar of contributor named as YuePeng YuePeng
The avatar of contributor named as Claude Opus 5 (1M context) Claude Opus 5 (1M context)

页面历史

Released under the Apache-2.0 License.