说明:
springboot文章23
修改而来
pom.xml文件,核心配置文件等文件,与文章23保持一致,本文只展示最新添加的文件,以减小文章冗余,更容易看出循环的使用方法。
知识点:
语法说明:
th:each="user, iterStat : ${userlist}"
中的
${userList}
是后台传过来的集合
◼
user
定义变量,去接收遍历
${userList}
集合中的一个数据
◼
iterStat
${userList}
循环体的信息
◼
其中
user
及
iterStat
自己可以随便取名
◼
interStat
是循环体的信息,通过该变量可以获取如下信息
index: 当前迭代对象的 index(从 0 开始计算)
count: 当前迭代对象的个数(从 1 开始计算)这两个用的较多
size:
被迭代对象的大小
current:
当前迭代变量
even/odd:
布尔值,当前循环是否是偶数
/
奇数(从
0
开始计算)
first:
布尔值,当前循环是否是第一个
last:
布尔值,当前循环是否是最后一个
注意:循环体信息 interStat 也可以不定义,则默认采用迭代变量加上 Stat 后缀,即userStat
1.index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>index.html</title>
</head>
<body>
<h3>index.html------学习模板thymeleaf的语法</h3>
<a href="tpl/expression1">标准变量表达式</a>
<br/>
<a href="tpl/expression2">选择变量表达式</a>
<br/>
<a href="tpl/link">链接表达式</a>
<br/>
<a href="tpl/eachList">循环List</a><br/>
<a href="tpl/eachArray">循环Array</a><br/>
<a href="tpl/eachMap">循环Map</a><br/>
</body>
</html>
2.ThymeleafController类
package com.it.controller;
import com.it.entity.SysUser;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.jws.WebParam;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
@RequestMapping("/tpl")
public class ThymeleafController {
//标准变量表达式
@GetMapping("/expression1")
public String expression1(Model model){
//添加数据到model
model.addAttribute("site","www.baidu.com");
model.addAttribute("myuser",new SysUser(1001,"小绿","女",22));
//指定视图
return "expression1";
}
//选择变量表达式
@GetMapping("/expression2")
public String expression2(Model model){
//添加数据到model
model.addAttribute("site2","www.bibili.com");
model.addAttribute("myuser2",new SysUser(1002,"小王","男",26));
//指定视图
return "expression2";
}
//链接表达式
@GetMapping("/link")
public String link(Model model){
model.addAttribute("userId",1003);
return "link";
}
//测试链接表达式的地址
@GetMapping("/queryAccount")
@ResponseBody
public String queryAccount(Integer id){
return "queryAccount,参数id="+id;
}
//测试链接表达式有两个参数的地址
@GetMapping("queryUser")
@ResponseBody
public String queryUser(String name,Integer age){
return "queryUser,有两个参数:name="+name+",age="+age;
}
//循环list
@GetMapping("/eachList")
public String eachList(Model model){
List<SysUser> list=new ArrayList<>();
list.add(new SysUser(1002,"张山","男",20));
list.add(new SysUser(1003,"小明","男",20));
list.add(new SysUser(1004,"小红","女",22));
list.add(new SysUser(1005,"小花","女",21));
model.addAttribute("myusers",list);
return "eachList";
}
//循环数组
@GetMapping("/eachArray")
public String eachArray(Model model){
SysUser userArray[]=new SysUser[3];
userArray[0]=new SysUser(1001,"小王","男",23);
userArray[1]=new SysUser(1002,"小李","男",22);
userArray[2]=new SysUser(1003,"小胡","女",23);
model.addAttribute("userarray",userArray);
return "eachArray";
}
//循环map
@GetMapping("/eachMap")
public String eachMap(Model model){
Map<String,SysUser> map=new HashMap<>();
map.put("user1",new SysUser(1001,"小黑","男",23));
map.put("user2",new SysUser(1002,"小白","男",22));
map.put("user3",new SysUser(1003,"小红","女",23));
model.addAttribute("mymap",map);
return "eachMap";
}
}
3.eachList.html
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>each循环</title>
</head>
<body>
<div style="margin-left: 400px">
<!--<div th:each="user,userI:${myusers}">
<p th:text="${user.id}"></p>
<p th:text="${user.name}"></p>
<p th:text="${user.sex}"></p>
<p th:text="${user.age}"></p>
</div>-->
<br/>
<table border="1">
<thead>
<tr>
<td>编号</td>
<td>id序号</td>
<td>name</td>
<td>sex</td>
<td>age</td>
</tr>
</thead>
<tbody>
<tr th:each="user,userI:${myusers}">
<td th:text="${userI.count}"></td>
<td th:text="${user.id}"></td>
<td th:text="${user.name}"></td>
<td th:text="${user.sex}"></td>
<td th:text="${user.age}"></td>
</tr>
</tbody>
</table>
</div>
</body>
</html>
4.eachArray.html
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>each循环</title>
</head>
<body>
<div style="margin-left: 400px">
<div th:each="user:${userarray}">
<p th:text="${user.id}"></p>
<p th:text="${user.name}"></p>
<p th:text="${user.sex}"></p>
<p th:text="${user.age}"></p>
<br/>
<hr/>
</div>
</div>
</body>
</html>
5.eachMap.html
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>循环map</title>
</head>
<body>
<div style="margin-left: 400px">
<div th:each="map,mapStat:${mymap}">
<p th:text="${map.key}"></p>
<p th:text="${map.value}"></p>
<p th:text="${map.value.id}"></p>
<p th:text="${map.value.name}"></p>
<p th:text="${map.value.sex}"></p>
<p th:text="${map.value.age}"></p>
<p th:text="${mapStat.count}"></p>
</div>
</div>
</body>
</html>
测试:
1.list循环测试
循环遍历的数据按照原样展示输出
循环遍历的数据加上循环变量的编号,按照表格的样式进行展示
2.array循环测试
点击循环Array
3.map循环测试
点击循环Map