Multi Select

多项选择组件要求用户从列表中选择多项。以下列表展示了一个示例:

Unresolved include directive in modules/ROOT/pages/components/ui/multiselect.adoc - include::../../../../../src/test/java/org/springframework/shell/docs/UiComponentSnippets.java[]

以下屏幕截图展示了一个典型的多项选择组件:

{"version": 2, "width": 85, "height": 9, "timestamp": 1645645867, "env": {"SHELL": "/bin/bash", "TERM": "xterm-256color"}}
[1.746447, "o", "java -jar spring-shell-sample-commands.jar"]
[2.881033, "o", "\r\n"]
[4.603396, "o", "\u001b[?1h\u001b=\u001b[?2004h\u001b[33mmy-shell:>\u001b[0m"]
[5.105471, "o", "\u001b[31mc\u001b[0m"]
[5.202878, "o", "\u001b[31mo\u001b[0m"]
[5.428705, "o", "\u001b[31mm\u001b[0m"]
[5.630033, "o", "\u001b[31mp\u001b[0m"]
[5.692044, "o", "\u001b[31mo\u001b[0m"]
[5.86652, "o", "\u001b[31mn\u001b[0m"]
[6.018765, "o", "\u001b[31me\u001b[0m"]
[6.089776, "o", "\u001b[31mn\u001b[0m"]
[6.251781, "o", "\u001b[31mt\u001b[0m"]
[7.126694, "o", "\u001b[31m \u001b[0m"]
[7.319912, "o", "\u001b[31mm\u001b[0m"]
[7.550772, "o", "\u001b[31mu\u001b[0m"]
[7.80087, "o", "\u001b[12D\u001b[1mcomponent multi\u001b[0m \u001b[K"]
[8.291497, "o", "\r\r\n\u001b[?1l\u001b>\u001b[?1000l\u001b[?2004l"]
[8.338879, "o", "\u001b[?1h\u001b=\u001b[?25l"]
[8.398742, "o", "\u001b[32;1m?\u001b[0m \u001b[97;1mtestSimple\u001b[0m [Use arrows to move], type to filter\u001b[54C \u001b[96;1m>\u001b[0m\u001b[96;1m \u001b[39m[ ]\u001b[0m key1\u001b[93C   \u001b[2m[ ]\u001b[0m \u001b[2mkey2\u001b[0m\u001b[93C   \u001b[1m[ ]\u001b[0m key3\u001b[3A\r"]
[12.265649, "o", "\u001b[35Cfiltering 'k'\u001b[K\r"]
[12.507991, "o", "\u001b[47C\u001b[1@e\r"]
[12.945812, "o", "\u001b[48C\u001b[1@y\r"]
[13.35949, "o", "\u001b[49C\u001b[1@1\r\r\n\u001b[103C \u001b[K\r\r\r\n\u001b[K\r\r\n\u001b[K\u001b[3A"]
[14.187299, "o", "\u001b[49C\u001b[P\r\r\n\u001b[103C   \u001b[2m[ ]\u001b[0m \u001b[2mkey2\u001b[0m\u001b[93C   \u001b[1m[ ]\u001b[0m key3\u001b[3A\r"]
[14.356992, "o", "\u001b[48C\u001b[P\r"]
[14.495579, "o", "\u001b[47C\u001b[P\r"]
[14.642467, "o", "\u001b[35Ctype to filter\u001b[K\r"]
[15.763904, "o", "\r\r\n\u001b[2C\u001b[32m[x]\u001b[0m\u001b[A\r"]
[16.496138, "o", "\r\r\n  \r\r\n\u001b[96;1m> \u001b[0m\u001b[2A\r"]
[16.678991, "o", "\r\r\n\r\n  \r\r\n\u001b[96;1m> \u001b[0m\u001b[3A\r"]
[17.979077, "o", "\r\r\n\r\n\r\n\u001b[2C\u001b[32m[x]\u001b[0m\u001b[3A\r"]
[18.809587, "o", "\r\r\n\r\n\r\n\u001b[2C\u001b[1m[ ]\u001b[0m\u001b[3A\r"]
[20.452942, "o", "\r\r\n\r\n\u001b[96;1m> \u001b[0m\r\r\n  \u001b[3A\r"]
[21.705426, "o", "\r\r\n\r\n  \r\r\n\u001b[96;1m> \u001b[0m\u001b[3A\r"]
[22.207898, "o", "\r\r\n\r\n\r\n\u001b[2C\u001b[32m[x]\u001b[0m\u001b[3A\r"]
[23.30633, "o", "\r\r\n\r\n\r\n\u001b[2C\u001b[1m[ ]\u001b[0m\u001b[3A\r"]
[24.642701, "o", "\u001b[?1l\u001b>\u001b[?12;25h\u001b[K\r\r\n\u001b[K\r\r\n\u001b[K\r\r\n\u001b[K\u001b[3A"]
[24.64692, "o", "\u001b[32;1m?\u001b[0m \u001b[97;1mtestSimple\u001b[0m \u001b[34mvalue1\u001b[0m\r\n"]
[24.647546, "o", "Got value value1\r\n"]
[24.649365, "o", "\u001b[?1h\u001b=\u001b[?2004h\u001b[33mmy-shell:>\u001b[0m"]
[26.649365, "o", "\u001b[?1h\u001b=\u001b[?2004h\u001b[33mmy-shell:>\u001b[0m"]

上下文对象是 MultiItemSelectorContext。以下表格描述了它的上下文变量:

Table 1. MultiItemSelectorContext Template Variables
Key Description

values

组件存在时返回的值。

rows

可见项目,其中行包含名称、选择、同行和已启用项目的映射。

model

父上下文变量(请参阅 SelectorComponentContext Template Variables)。