SpringBoot入门(六)Thymeleaf语法之迭代遍历、URL表达式

前言

      本章讲解Thymeleaf语法的迭代遍历和URL表达式

方法

修改上一章节的controller

package cn.edu.ccut.controller;

import java.util.List;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import cn.edu.ccut.bo.Users;

@Controller
public class HelloController {

	@RequestMapping("/showMsg")
	public String getMsg(HttpServletRequest request, Model model){
		Map<String, Object> map = new HashMap<>();
		List<Users> list = new ArrayList<>();
		Users user1 = new Users(1, "张三", 20);
		Users user2 = new Users(2, "李四", 22);
		Users user3 = new Users(3, "王五", 24);
		list.add(user1);
		list.add(user2);
		list.add(user3);
		map.put("u1", user1);
		map.put("u2", user2);
		map.put("u3", user3);
		model.addAttribute("list", list);
		model.addAttribute("map", map);
		return "index";
	}
}

1.迭代遍历

1)迭代list

<!DOCTYPE html>
<html>
<head>
	<title>Thymeleaf</title>
</head>
<body>
	<table border="0">
		<tr>
			<th>编号</th>
			<th>姓名</th>
			<th>年龄</th>
		</tr>
		<tr th:each="user : ${list}">
			<td th:text="${user.id}"></td>
			<td th:text="${user.name}"></td>
			<td th:text="${user.age}"></td>
		</tr>
	</table>
</body>
</html>

我们可以发现,它和我们熟悉的Java foreach很相似,我们上手的难度不是很高。

2)遍历map

<!DOCTYPE html>
<html>
<head>
	<title>Thymeleaf</title>
</head>
<body>
	<table border="0">
		<tr>
			<th>编号</th>
			<th>姓名</th>
			<th>年龄</th>
		</tr>
		<!-- <tr th:each="user : ${list}">
			<td th:text="${user.id}"></td>
			<td th:text="${user.name}"></td>
			<td th:text="${user.age}"></td>
		</tr> -->
		<tr th:each="maps : ${map}">
			<td th:each="entry : ${maps}" th:text="${entry.value.id}"></td>
			<td th:each="entry : ${maps}" th:text="${entry.value.name}"></td>
			<td th:each="entry : ${maps}" th:text="${entry.value.age}"></td>
		</tr>
	</table>
</body>
</html>

我们注意到,这个map需要遍历两次才能拿到真正的键值对。

2.URL表达式

出于安全的考虑,模板类文件不可以通过浏览器直接键入URL地址访问,为了让本次测试更加方便,我们将编写一个controller方法来进行页面跳转!

package cn.edu.ccut.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HelloController {

	@RequestMapping("/{page}")
	public String showPage(@PathVariable String page,String name,Integer age){
		System.out.println("name="+name+",age="+age);
		return page;
	}
}

该方法可以直接跳转到我们所需要的路径。

创建index.html:

<!DOCTYPE html>
<html>
<head>
	<title>Thymeleaf</title>
</head>
<body>
	<a href="/index2">普通跳转</a>
	<a th:href="@{/index2}">thymeleaf跳转</a>
</body>
</html>

创建index2.html:

<!DOCTYPE html>
<html>
<head>
	<title>Index2</title>
</head>
<body>
	Hello Index2<br/>
</body>
</html>

注意:使用thymeleaf语法的href需要加上@{}

经验证,都可以跳转到指定的index2页面中。

传递参数:

修改我们的index.html

<!DOCTYPE html>
<html>
<head>
	<title>Thymeleaf</title>
</head>
<body>
	<a href="/index2?name=jwang&age=23">普通跳转</a>
	<a th:href="@{/index2(name=jwang,age=23)}">thymeleaf跳转</a>
</body>
</html>

由此可见,它们虽然写法不同,但是起到了同样的效果!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值