如何在Thymeleaf的th:each循环中生成两行表格行?
在Thymeleaf循环内生成多行的解决方案
当然可以实现!Thymeleaf完全支持在循环逻辑里生成多个同级的表格行,你只需要借助它的无容器逻辑标签来承载循环属性就行,具体做法如下:
你之前用JSTL的写法是这样的:
<c:forEach items="${listOfObjects}" var="obj"> <tr> <td>${obj.id}</td> </tr> <tr> <td>${obj.name}</td> </tr> </c:forEach>
对应到Thymeleaf,我们可以用<th:block>标签来包裹这两行<tr>,把th:each属性放到<th:block>上——这个标签是Thymeleaf的专用逻辑容器,不会被渲染成实际的HTML元素,只会执行它身上的逻辑:
<th:block th:each="obj : ${listOfObjects}"> <tr> <td th:text="${obj.id}"></td> </tr> <tr> <td th:text="${obj.name}"></td> </tr> </th:block>
这样循环遍历listOfObjects里的每一个obj时,都会生成对应的两行表格,最终的HTML输出和你用JSTL实现的效果完全一致。
如果不想用<th:block>,理论上也可以用普通的HTML元素(比如<div>)来承载th:each,但这样会在表格里插入多余的<div>标签,破坏表格的结构,所以<th:block>是最适合的方案。
内容的提问来源于stack exchange,提问作者Scott Brank
相关产品推荐
相关产品推荐

