此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Shell 3.3.0Spring中文文档

此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Shell 3.3.0Spring中文文档

单个选择组件要求用户从列表中选择一个项目。它类似于一个简单的 Dropbox 实现。以下列表显示了一个示例:Spring中文文档

@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;
	}
}

以下截屏视频显示了单个选择组件的典型输出:Spring中文文档

上下文对象为 。下表描述了其上下文变量:SingleItemSelectorContextSpring中文文档

表 1.SingleItemSelectorContext 模板变量
钥匙 描述

valueSpring中文文档

组件存在时返回的值。Spring中文文档

rowsSpring中文文档

可见项,其中行包含名称和所选项的映射。Spring中文文档

modelSpring中文文档

父上下文变量(请参阅 SelectorComponentContext 模板变量)。Spring中文文档

您可以通过定义要公开的项目来预选项目。这是 如果您知道默认值并让用户只需按下即可做出选择,则很有用。 以下清单设置了默认值:EnterSpring中文文档

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);