|
该版本仍在开发中,尚未被视为稳定。最新稳定版本请使用Spring Shell 3.4.1! |
单选
单选组件要求用户从列表中选择一个项目。它类似于简单的 Dropbox 的实现。以下列表展示了一个示例:
@Command
public class ComponentCommands extends AbstractShellComponent {
@Command(command = "component single", description = "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;
}
}
以下屏幕播放展示了单选组件的典型输出:
上下文对象为SingleItemSelectorContext.下表描述了其上下文变量:
| 钥匙 | 描述 |
|---|---|
|
组件存在时返回的值。 |
|
可见的物品,行中包含名称和选定物品的地图。 |
|
父上下文变量(参见 SelectorComponentContext 模板变量)。 |
你可以通过定义一个暴露的物品来预选它。这是
如果你知道默认设置,让用户只需按键,就很有用进入做出选择。
以下列表设定了默认情况:
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);