我尝试在Thymeleaf中迭代一个字符串,一个字母一个字母:
<div th:each="i: ${#numbers.sequence(0, #strings.length(name))}">
<p th:text="${name.charAt(i)}"></p>
</div>
这给了我一个错误:
原因:org.attoparser.ParseException:计算SpringEL表达式时出现异常:“name.charAt(i)”(模板:“name-list”- line 8,col 16)at org.attoparser.MarkupParser.parseDocument(MarkupParser. java:393)at org.attoparser.MarkupParser.parse(MarkupParser. java:257)at org.thymeleaf. templaparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser. java:230)...48更多
如果我做了
<div th:each="i: ${#numbers.sequence(0, #strings.length(name))}">
<p th:text="${name.charAt(2)}"></p>
</div>
Thymeleaf没有抱怨,给我我想要的。谢谢大家。
2条答案
按热度按时间iklwldmw1#
你的索引越界了。从字符串的长度中减去1作为序列的端点(包括和)。
您可以直接使用
[i]
来通过索引访问字符,而不是charAt
。为了避免使用索引,可以循环字符串的字符(通过调用
toCharArray()
获得)。a0x5cqrl2#
你也可以使用index属性,如下所示