thymeleaf动态⽣成表格-换⾏问题-每隔n列换⼀⾏——新⽅式
⽤到的标签和函数
numbers.sequence(from,to)函数 ⽣成⼀个从from到to的序列;
th:with 定义局部变量,可以配合td:block标签使⽤,也可以定义在常规html标签内;html表格元素
th:block 功能标签,标签本⾝不会输出为⼀个html元素,只是⽤来做取值、赋值、循环等功能性⽤途。
th:each ⽤于遍历数组,具体说明详见
th:if ⽤做逻辑判断,满⾜条件则输出html,不满⾜则不输出。
⽰例代码
通过userList数组⽣成⼀个表格,表格的每⼀⾏不超过5个元素(最后⼀⾏可能少于5个):
<!--
⽤ th:with 定义局部变量 colSize 和 rowSize ,变量作⽤域在它所在的 table 之内。
colSize=5 表⽰每⾏显⽰5五个,超过则换⾏,
rowSize ⾏数,通过userList的总数和colSize计算出来。
-->
<table border="1"with="colSize=${5}, rowSize=${userList.size()/colSize}, rowSize=${(userList.size()%colSize==0 ? rowSize : (rowSize+1))}"> <!--遍历⾏数,rowIdx为⾏号,每⼀⾏是⼀个tr标签对 -->
<tr if="${userList.size() gt 0}"each="rowIdx:${#numbers.sequence(1, rowSize)}">
<!--遍历列数,colIdx为列号,每⼀列是⼀个td标签对 -->
<td each="colIdx:${#numbers.sequence(1,colSize)}">
<!-- 根据⾏号和列号计算数组的下标索引号idx ,然后通过idx从userList中取出⼀个元素user
由于最后⼀⾏的数据可能没有满⾏(userList.size()%colSize!=0的情况),因此需要做数组越界判断, -->
<!-- th:block 功能标签,标签本⾝不会输出为⼀个html元素,此处只是⽤来配合 th:with -->
<block with="idx=${(rowIdx-1)*colSize+colIdx-1}, user=${idx<userList.size() ? userList[idx] : null}">
<!-- th:if 决定是否输出 input 标签:user不是空指针才输出 -->
<input if="${user ne null}"name="userList"type="checkbox"value="${user.id}"text="${user.nickname}"/>
</block>
</td>
</tr>
</table>
效果
每⾏不超过5个元素:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。