Single Select

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

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

以下屏幕截图显示了单选组件的典型输出:

{"version": 2, "width": 85, "height": 8, "timestamp": 1645645867, "env": {"SHELL": "/bin/bash", "TERM": "xterm-256color"}}
[2.193321, "o", "java -jar spring-shell-sample-commands.jar"]
[3.11524, "o", "\r\n"]
[4.904714, "o", "\u001b[?1h\u001b=\u001b[?2004h\u001b[33mmy-shell:>\u001b[0m"]
[5.372714, "o", "\u001b[31mc\u001b[0m"]
[5.484943, "o", "\u001b[31mo\u001b[0m"]
[5.70511, "o", "\u001b[31mm\u001b[0m"]
[5.913092, "o", "\u001b[31mp\u001b[0m"]
[5.992808, "o", "\u001b[31mo\u001b[0m"]
[6.159092, "o", "\u001b[31mn\u001b[0m"]
[6.281094, "o", "\u001b[31me\u001b[0m"]
[6.353925, "o", "\u001b[31mn\u001b[0m"]
[6.49373, "o", "\u001b[31mt\u001b[0m"]
[6.677988, "o", "\u001b[31m \u001b[0m"]
[6.825018, "o", "\u001b[31ms\u001b[0m"]
[6.95602, "o", "\u001b[31mi\u001b[0m"]
[7.121719, "o", "\u001b[31mn\u001b[0m"]
[7.309007, "o", "\u001b[13D\u001b[1mcomponent single\u001b[0m \u001b[K"]
[7.972392, "o", "\r\r\n\u001b[?1l\u001b>\u001b[?1000l\u001b[?2004l"]
[8.019885, "o", "\u001b[?1h\u001b=\u001b[?25l"]
[8.080156, "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 key1\u001b[0m\u001b[97C   key2\u001b[2A\r"]
[9.181662, "o", "\r\r\n  key1\r\r\n\u001b[96;1m> key2\u001b[0m\u001b[2A\r"]
[9.701431, "o", "\r\r\n\u001b[96;1m> key1\u001b[0m\r\r\n  key2\u001b[2A\r"]
[10.380557, "o", "\r\r\n  key1\r\r\n\u001b[96;1m> key2\u001b[0m\u001b[2A\r"]
[12.157001, "o", "\u001b[35Cfiltering 'k'\u001b[K\r"]
[14.605973, "o", "\u001b[47C\u001b[1@e\r\r\n\u001b[96;1m> key1\u001b[0m\r\r\n  key2\u001b[2A\r"]
[14.92268, "o", "\u001b[48C\u001b[1@y\r"]
[15.320008, "o", "\u001b[49C\u001b[1@1\r\r\n\u001b[103C \u001b[K\r\r\r\n\u001b[K\u001b[2A"]
[16.215448, "o", "\u001b[49C\u001b[P\r\r\n\u001b[103C   key2\u001b[2A\r"]
[16.559377, "o", "\u001b[48C\u001b[P\r"]
[16.784486, "o", "\u001b[47C\u001b[P\r"]
[17.004921, "o", "\u001b[35Ctype to filter\u001b[K\r"]
[17.790542, "o", "\r\r\n  key1\r\r\n\u001b[96;1m> key2\u001b[0m\u001b[2A\r"]
[18.340142, "o", "\u001b[?1l\u001b>\u001b[?12;25h\u001b[K\r\r\n\u001b[K\r\r\n\u001b[K\u001b[2A"]
[18.347511, "o", "\u001b[32;1m?\u001b[0m \u001b[97;1mtestSimple\u001b[0m \u001b[34mvalue2\u001b[0m\r\n"]
[18.34852, "o", "Got value value2\r\n"]
[18.35067, "o", "\u001b[?1h\u001b=\u001b[?2004h\u001b[33mmy-shell:>\u001b[0m"]
[20.35067, "o", "\u001b[?1h\u001b=\u001b[?2004h\u001b[33mmy-shell:>\u001b[0m"]

context 对象是 SingleItemSelectorContext。下表描述了其上下文变量:

Table 1. SingleItemSelectorContext Template Variables
Key Description

value

组件存在时的返回值。

rows

可见项目,行中包含名称和所选项目映射。

model

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

你可以通过定义一项来预先选中它以供显示。如果你知道默认设置,这样很有用且可以让用户只需按 Enter 即可做出选择。以下列表设置一个默认值:

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