jsp里面有个c:foreach遍历,thymeleaf里面也有th:each
来个装简单的遍历,先看java代码
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> m = new HashMap<String, Object>();
m.put("name", "name1");
m.put("age", "1");
list.add(m);
m = new HashMap<String, Object>();
m.put("name", "name2");
m.put("age", "2");
list.add(m);
m = new HashMap<String, Object>();
m.put("name", "name3");
m.put("age", "3");
list.add(m);
m = new HashMap<String, Object>();
m.put("name", "name4");
m.put("age", "4");
list.add(m);
m = new HashMap<String, Object>();
m.put("name", "name5");
m.put("age", "5");
list.add(m);
model.addAttribute("list", list);
接着看html写法:
简单遍历:
<table border="1">
<tr th:each="m : ${list}"><!-- 其中m是个临时变量,像for(User u : userList)那样中的u-->
<td th:text="${m.name}"/>
<td th:text="${m.age}"/>
</tr>
</table>
除了遍历,我们还可以拿到遍历的其他信息,比如下标,单行双行,这时要有一状态变量,假设命名为:iterStat,那么从iterStat中可获取的信息如下:
// 来自官网:
当前迭代索引,从0开始。这是index属性。
当前迭代索引,从1开始。这是count属性。
迭代变量中的元素总数。这是size财产。
每个迭代的iter变量。这是current财产。
目前的迭代是偶数还是奇数。这些是even/odd布尔属性。
目前的迭代是否是第一个。这是first布尔属性。
目前的迭代是否是最后一个。这是last布尔属性。
看html:
<table border="1">
<tr th:each="m,iterStat : ${list}">
<td th:text="|下标:${iterStat.index} 下标是不是单数:${iterStat.odd}|"/>
<td th:text="${m.name}"/>
<td th:text="${m.age}"/>
</tr>
</table>