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