这种方式在高版本的thymeleaf中报错,
建议使用新的方式生成: 动态生成表格-新方式
用到的th标签
th:remove
tag
: 删除当前标签(即包含这个属性的标签),但不删除它的子标签(孩子节点)。all
: 删除当前标签和它的所有子标签。body
:不删除当前标签,但删除它所有的子标签。all-but-first
: 删除当前标签的所有子标签,除了第一个子标签。none
:什么也不做。
th:utext
可以输出非文本内容(比如HTML元素)
th:text
只能输出文本内容,如果是特殊字符则会转义成普通文本输出(如html元素会变为文本输出)
th:each
用法:th:each="usr,status:${userList}"
参数${userList}
表示要循环的集合,
第一变量usr
表示当前循环中的元素引用(集合中的一个元素,变量名字可以自定义),
第二个变量status
表示循环状态值(变量名字可以自定义)
- status.index:表示当前元素的索引(从0开始计算)。
- status.count: 也是索引(从1开始计算,即index+1)
- status.size: 被迭代集合对象大小
th:block
功能标签,标签本身不会输出为一个html元素,只是用来做取值或者循环等功能性用途。
示例代码
thymeleaf 动态生成表格,比如每隔5列换一行(增加一个<tr></tr>)
<table cellpadding="0" cellspacing="0" border="1">
<th:block th:each="usr,status:${userList}">
<p th:remove="tag" th:utext="${(status.index+1)%5==1 ? '<tr>':''}"/>
<td><input name="userList" type="checkbox" th:value="${usr.id}" th:text="${usr.nickname}"/>
</td>
<p th:remove="tag" th:utext="${(status.index+1)%5==0 ? '</tr>':''}"/>
</th:block>
</table>