跳到主要内容

单选

QWen Max 中英对照 Single Select

单选组件要求用户从列表中选择一个项目。它类似于简单的下拉框实现。以下示例展示了这一点:

@ShellComponent
public class ComponentCommands extends AbstractShellComponent {

@ShellMethod(key = "component single", value = "Single selector", group = "Components")
public String singleSelector() {
SelectorItem<String> i1 = SelectorItem.of("key1", "value1");
SelectorItem<String> i2 = SelectorItem.of("key2", "value2");
List<SelectorItem<String>> items = Arrays.asList(i1, i2);
SingleItemSelector<String, SelectorItem<String>> component = new SingleItemSelector<>(getTerminal(),
items, "testSimple", null);
component.setResourceLoader(getResourceLoader());
component.setTemplateExecutor(getTemplateExecutor());
SingleItemSelectorContext<String, SelectorItem<String>> context = component
.run(SingleItemSelectorContext.empty());
String result = context.getResultItem().flatMap(si -> Optional.ofNullable(si.getItem())).get();
return "Got value " + result;
}
}
java

以下屏幕录制显示了单选组件的典型输出:

上下文对象是 SingleItemSelectorContext。下表描述了其上下文变量:

表 1. SingleItemSelectorContext 模板变量

Key描述
value组件存在时返回的值。
rows可见的项目,其中 rows 包含名称和选中项目的映射。
model父上下文变量(参见SelectorComponentContext 模板变量)。

你可以通过定义一个项目来预先选择它。如果你知道默认值,这将非常有用,用户只需按 Enter 键即可做出选择。以下示例设置了默认值:

SelectorItem<String> i1 = SelectorItem.of("key1", "value1");
SelectorItem<String> i2 = SelectorItem.of("key2", "value2");
List<SelectorItem<String>> items = Arrays.asList(i1, i2);
SingleItemSelector<String, SelectorItem<String>> component = new SingleItemSelector<>(getTerminal(),
items, "testSimple", null);
component.setDefaultExpose(i2);
java