java - Spring - Thymeleaf 迭代

标签 java spring thymeleaf

假设我想获得这样的结构:

<div>
  <ul>
    <!-- Item -->
    <li class="item">
      <span class="more no-select" data-target=".item1">+</span>
      <span class="right"></span>
    </li>

    <!-- Children -->
    <li class="item1 hidden nojs">
      <span class="spacing"></span>
      <a href="mylink">My link</a>
    </li>
    <li class="item1 hidden nojs">
      <span class="spacing"></span>
      <a href="mylink">My link</a>
    </li>
    <li class="item1 hidden nojs">
      <span class="spacing"></span>
      <a href="mylink">My link</a>
    </li>
  </ul>
</div>

基本上每个 item 都有 [0 ... n] 个 children

要使用 Thymeleaf 获得此结构,我首先定义主要项目如下:

<li th:each="item : ${items}">
  <span class="more no-select" th:attr="data-target='.' + ${item.id}">+</span>
  <span class="right"></span>
</li>

但是,由于 item 的范围有限,我该如何循环遍历它的 item.children

最佳答案

我认为您必须将 th:each 移动到更高的级别,这样您还可以在每个 li 元素之后添加子元素。 th:block 元素应该很方便,因为它本身不创建 HTML 元素,但可以携带任何 Thymeleaf 属性。

解决方案的概要如下:

<th:block th:each="item : ${items}">
    <!-- Item -->
    <li class="item">
        item content ...
    </li>
    <!-- Children -->
    <li th:each="child : ${item.children}" class="item1 hidden nojs">
        child content ...
    </li>
</th:block>

关于java - Spring - Thymeleaf 迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46896307/

相关文章:

Java PreparedStatement 检索最后插入的 ID

java - 如何在 Spring 中将 JdbcTemplate 转换为 Flux?

java - ThymeLeaf 选择特定的枚举类型

java - 在 thymeleaf 中使用 java lambda 函数运算符 (->)

java - @param 究竟是如何工作的 - Java

java - 有没有办法告诉 java BufferedReader 读取到某个点

java - quartz 中的 thread.sleep 必须与我的日程安排时间相匹配吗?

java - Java中order by子句的SQL注入(inject)漏洞

java - 无法在 Spring Boot 中从 vcap_services 中用户提供的凭据检索

java - Thymeleaf 和 Spring @RequestParam : cannot pass a field value to the url