此版本仍在开发中,尚未被认为是稳定版。请使用最新稳定版 Spring Shell 4.0.1spring-doc.cadn.net.cn

单选按钮

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

public class ComponentCommands {

	@Command(name = "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);
		ResourceLoader resourceLoader = null; // getResourceLoader();
		TemplateExecutor templateExecutor = null; // getTemplateExecutor();
		component.setResourceLoader(resourceLoader);
		component.setTemplateExecutor(templateExecutor);
		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-doc.cadn.net.cn

The context object是SingleItemSelectorContext。以下表格描述了其上下文变量:spring-doc.cadn.net.cn

表 1. 单项选择器上下文模板变量
描述

valuespring-doc.cadn.net.cn

组件存在时返回的值。spring-doc.cadn.net.cn

rowsspring-doc.cadn.net.cn

可见项,其中行包含名称和选中项的映射。spring-doc.cadn.net.cn

modelspring-doc.cadn.net.cn

父级上下文变量(请参阅选择器组件上下文模板变量).spring-doc.cadn.net.cn

您可以通过定义使其显示来预先选择一个项目。这在你知道默认值时非常有用,可以让用户只需按下Enter即可做出选择。 以下示例设置了默认值:spring-doc.cadn.net.cn

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