对于最新的稳定版本,请使用 Spring Shell 3.3.3spring-doc.cn

多选

多选组件要求用户从列表中选择多个项目。 下面的清单显示了一个示例:spring-doc.cn

@ShellComponent
public class ComponentCommands extends AbstractShellComponent {

	@ShellMethod(key = "component multi", value = "Multi selector", group = "Components")
	public String multiSelector() {
		List<SelectorItem<String>> items = new ArrayList<>();
		items.add(SelectorItem.of("key1", "value1"));
		items.add(SelectorItem.of("key2", "value2", false, true));
		items.add(SelectorItem.of("key3", "value3"));
		MultiItemSelector<String, SelectorItem<String>> component = new MultiItemSelector<>(getTerminal(),
				items, "testSimple", null);
		component.setResourceLoader(getResourceLoader());
		component.setTemplateExecutor(getTemplateExecutor());
		MultiItemSelectorContext<String, SelectorItem<String>> context = component
				.run(MultiItemSelectorContext.empty());
		String result = context.getResultItems().stream()
				.map(si -> si.getItem())
				.collect(Collectors.joining(","));
		return "Got value " + result;
	}
}

以下截屏视频显示了一个典型的多选组件:spring-doc.cn

上下文对象是 .下表描述了其上下文变量:MultiItemSelectorContextspring-doc.cn

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

valuesspring-doc.cn

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

rowsspring-doc.cn

可见项,其中行包含 name、selected、on-row 和 enabled 项的映射。spring-doc.cn

modelspring-doc.cn

父上下文变量(请参阅 SelectorComponentContext 模板变量)。spring-doc.cn