简体   繁体   中英

Unable to iterate over List<List<String>> using Thymeleaf / Spring-Boot

Using Thymeleaf, I am unable to iterate over List<List<String>>

 <tr th:each="row : ${rows}">
      <td th:text="${row[0]}"></td>
      <td th:text="${row[1]}"></td>
 </tr>

Each row has more than 1 value.

When rendering, I am getting the following exception

2016-11-02 20:40:21.033 ERROR 44829 --- [nio-5252-exec-1] org.thymeleaf.TemplateEngine             : [THYMELEAF][http-nio-5252-exec-1] Exception processing template "completed": Exception evaluating SpringEL expression: "row[1]" (completed:217)
2016-11-02 20:40:21.034 ERROR 44829 --- [nio-5252-exec-1] o.a.c.c.C.[.[.[.[dispatcherServlet]      : Servlet.service() for servlet [dispatcherServlet] in context with path [/test-dashboard] threw exception [Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "row[1]" (completed:217)] with root cause

org.springframework.expression.spel.SpelEvaluationException: EL1025E:(pos 3): The collection has '1' elements, index '1' is invalid

Thanks in advance.

How about a double loop?

( note that i am not sure about the validity of this XHTML , you might have to use a different HTML element than a SPAN under a TR )

<tr th:each="row : ${rows}">
      <span th:each="s : ${row}">
         <td th:text="${s}"></td>             
      </span>
 </tr>

If you just want to generate a TD for each of them, add another for-each, on a TD :

<tr th:each="row : ${rows}">
     <td th:each="rowValue : ${row}" th:text="${rowValue}"></td>
</tr>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM