java - Thymeleaf 循环并按每 n 项分组
问题描述
我正在使用百里香,我想迭代一个循环并按每 n 个项目分组。现在我的代码想要按每 4 个项目分组。在搜索了大多数问题之后,这是我的代码:
<div th:each="items, iter: ${myList}" th:if="${iter.count} % 4 == 0" th:class="${iter.first}? 'nice-slider-slide active first' : 'nice-slider-slide'">
<div class="nice-slider-entry" th:each="item, iter: ${items}">
<span th:text="${item.getName}"></span>
</div>
</div>
结果是空白的,它什么也没打印。但我想要的结果是:
<div class="nice-slider-slide active first">
<div class="nice-slider-entry">
<span>Name</span>
</div>
<div class="nice-slider-entry">
<span>Name</span>
</div>
<div class="nice-slider-entry">
<span>Name</span>
</div>
<div class="nice-slider-entry">
<span>Name</span>
</div>
</div>
<div class="nice-slider-slide">
<div class="nice-slider-entry">
<span>Name</span>
</div>
<div class="nice-slider-entry">
<span>Name</span>
</div>
<div class="nice-slider-entry">
<span>Name</span>
</div>
<div class="nice-slider-entry">
<span>Name</span>
</div>
</div>
解决方案
为什么不移动分组外视图层的逻辑?Thymeleaf 对数据计算不太友好。而不是一个简单的列表有一个列表列表:
List<String> myList;
替换为:
List<List<String>> myList;
您的百里香代码将是这样的:
<div th:each="subList,iter : ${myList}" th:class="${iter.first}? 'nice-slider-slide active first' : 'nice-slider-slide'">
<div class="nice-slider-entry" th:each="index: ${subList}">
<span th:text="${index}"></span>
</div>
</div>
使用纯 Thymeleaf 解决方案进行更新:
<th:block th:with="noEl = 4,totalSize = ${#lists.size(myList)} - 1">
<th:block th:each=" listIndex: ${#numbers.sequence(0, totalSize, noEl)}">
<div th:class="${listIndex eq 0 }? 'nice-slider-slide active first' : 'nice-slider-slide'"
th:with="maxValue = ${ totalSize lt (listIndex + noEl -1) ? totalSize : listIndex + noEl -1}">
<div class="nice-slider-entry" th:each="index : ${#numbers.sequence(listIndex, maxValue)}">
<span th:text="${myList[index]}"></span>
</div>
</div>
</th:block>
</th:block>
推荐阅读
- javascript - 我如何附加到嵌套的输入数组。反应形式
- typescript - Babel TypeScript 预设不理解导入类型和导出类型
- python - plotly:水平条形图无法识别/显示 trace2
- opengl - 在绘制网格表面和多边形边缘时如何避免 OpenGL 中的 z-fighting?
- css - 在 woocommerce 中使用自定义 CSS 隐藏它
- javascript - 如何将此js语音识别代码变成for循环?
- python - Python 脚本无法捕获所有 TCP 数据包
- javascript - 如何使用 CKEditor5 和带有 REACT 的 CKFinder 获取“CKEditorFuncNum”获取参数?
- android - 如何为 Android 10 及更高版本获取路径 /storage/emulated/0/Download/file_name.mime_type
- python - Discord Bot 在不应该的情况下随机发送多次命令