You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Thymeleaf实现连贯嵌套有序列表(无需手动设置start值)

解决方案:实现无需手动维护序号的连贯层级有序列表

核心思路

使用单一<ol>容器承载所有列表项,将普通条目、父项条目都作为该容器的直接子<li>元素,父项内部嵌套子列表<ol>。浏览器会自动维护顶级列表的连贯序号,完全不需要手动设置start属性。

修正后的Thymeleaf代码示例

<ol type="a">
  <!-- 无前缀的普通列表项 -->
  <li>Coffee</li>

  <!-- 父项循环:直接作为顶级ol的子li -->
  <li th:each="parent : ${parentChildMap}">
    <!-- 父项详情内容 -->
    <div th:text="${parent.key}">父项名称示例</div>
    
    <!-- 子列表:嵌套在父项li内部,不影响顶级序号 -->
    <ol>
      <li th:each="child : ${parent.value}">
        <!-- 子项详情内容 -->
        <span th:text="${child}">子项内容示例</span>
      </li>
    </ol>
  </li>

  <!-- 后续普通列表项 -->
  <li>Water</li>
  <li>Beer</li>
</ol>

问题根源说明

  1. 拆分多个<ol>会强制切断列表的序号连续性,必须手动维护start值,父项数量变化时必然需要修改代码;
  2. 之前的代码错误地用<span>等无关标签包裹父项内容,破坏了<ol>的层级结构,导致序号无法连贯。

可选样式调整(按需使用)

如果需要子列表使用不同的序号样式,通过CSS控制即可,无需修改HTML结构:

/* 顶级列表用小写字母 */
ol {
  list-style-type: lower-alpha;
}
/* 子列表用阿拉伯数字 */
ol ol {
  list-style-type: decimal;
  margin-left: 1.5em;
}

内容的提问来源于stack exchange,提问作者Dean Thomas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 01:49:51