如何在 thymeleaf th:each 标签中使用 spel 内联列表

how to use spel inline list in thymeleaf th:each tag

thymeleaf official docs 中,它指出

Use Spring Expression Language (Spring EL or SpEL) as a variable expression language, instead of OGNL. Consequently, all ${...} and *{...} expressions will be evaluated by Spring’s Expression Language engine.

所以我有以下 html 代码,其中 #{1,2,3} 是一个 spel 内联列表表达式

<select>
    <option th:value="${opt}" th:each="opt : ${'#{1,2,3}'}"/>
</select>

希望能改成

<select>
    <option value="1"/>
    <option value="2"/>
    <option value="3"/>
</select>

但是改成了

<select>
    <option value="#{1,2,3}"/>
</select>

为什么?提前致谢!

更新

正确的用法是th:each="opt : ${'#{1,2,3}'}"

这就是你想要的:

<select>
    <option th:value="${opt}" th:each="opt : ${ {1, 2, 3} }"/>
</select>

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/expressions.html#expressions-inline-lists

${'#{1,2,3}'} 的计算结果为字符串“#{1,2,3}”,这就是为什么您会得到一个值为 #{1,2,3}<option>。我不太确定表达式 #{1,2,3} 应该如何表示列表。