SpringBoot集成Thymeleaf模板

13 篇文章 0 订阅
1 篇文章 0 订阅

Thymeleaf是一个流行的模板引擎,该模板引擎采用java语言开发;Thymeleaf模板既能用于web环境下,也能用于非web环境下,在非web环境下,它能直接显示模板上的静态数据,在web环境下,它能像JSP一样从后台接收数据并替换掉模板;Thymeleaf模板它是基于HTML的,以HTML标签为载体,Thymeleaf要寄托在HTML的标签下实现对数据的展示

  • 在Controller层:
@Controller
public class ThymeleafController {

    @RequestMapping("/boot/index")
    public String index(Model model){
        model.addAttribute("data","SpringBoot集成Thymeleaf");
        return "index";
    }
}

在Controller层是使用Model来存放后端数据的,前端可以使用${}从Model中取出来。Model中可以存放实体类的引用,前端可以通过${引用.属性}来获取

  • index.html页面:
<!DOCTYPE html>
<html lang="en">
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>SpringBoot集成Thymeleaf</title>
</head>
<body>
<span th:text="${data}"></span>
</body>
</html>

注意:由于html原本没有th:这个属性所以需要在头部添加<html xmlns:th=“http://www.thymeleaf.org”>即可识别到

  • 在application.properties文件中:
#开发阶段,建议关闭thymeleaf的缓存
spring.thymeleaf.cache=false

URL表达式

语法:@{}
URL表达式可用于<script src="…">、<link href="…">、<a href="…">等

  • 绝对URL,比如:
<a th:href="@{'http://localhost:8080/boot/user/info?id='+${user.id}}">查看</a>
  • 相对URL,相对于页面:
<a th:href="@{'user/info?id='+${user.id}}">查看</a>
  • 相对URL,相对项目上下文(即项目上下文路径会被自动添加,这样子能很有效的防止404):
<a th:href="@{'/user/info?id='+${user.id}}">查看</a>

th:each属性

  • List类型:
<tr th:each="user,interStat:${userlist}">
	<td th:text="${userStat.count}"></td><!--变量名加Stat.count即可输出当前循环对象的个数,从1开始-->
	<td th:text="${user.id}"></td>
	<td th:text="${user.nick}"></td>
	<td th:text="${user.phone}"></td>
	<td th:text="${user.email}"></td>
	<td th:text="${user.address}"></td>
</tr>
  • Map类型:
<div th:each="myArayVal : ${myArray}">
	<div th:text="${myArrayVal}"></div>
</div>
  • 数组类型:
<div th:each="myArayVal : ${myArray}">
	<div th:text="${myArrayVal}"></div>
</div>

th:inline内联文本、内联脚本(主要用在js取动态数据)

th:inline有三个取值类型{text,javascript和none},该属性使用内联表达式[[…]]展示变量数据

<span th:line="text">Hello,[[${user.nick}]]</span>
<!--等同于-->
<span>Hello,<span th:text="{user.nick}"></span></span>
<!--th:inline写在任何父标签都可以,比如如下也是可以的-->
<body th:inline="text">
	...
	<span>[[${user.nick}]]</span>
</body>
<!--内联脚本-->
<script th:inline="javascript" type="text/javascript">
	var user = [[${user.phone}]];
	alert(user);
</script>

<script th:inline="javascript" type="text/javascript">
	var msg = "Hello,"+[[${user.phone}]];
	alert(msg);
</script>

表达式基本对象

thymeleaf模板引擎提供了一组内置的对象,这些内置对象可以直接在模板中使用,这些对象由#号开始引用

#request对象:相对于HttpServletRequest对象,这是3.x版本,若是2.x版本使用#httpServletRequest

${#request.getContextPath()}
${#request.getAttribute("phone")}

#session对象:相对于HttpSession对象,这是3.x版本,若是2.x版本使用#httpSession

注意:需要在后台Controller中设置session

${#session.getAttribute("phone")}
${#session.id}
${#session.lastAccessedTime}

Thymaleaf表达式功能对象

模板引擎提供的一组功能性内置对象,可以在模板中直接使用这些对象提供的功能方法;工作中常使用的数据类型,如集合,时间,数值,可以使用Thymeleaf的提供的功能性对象来处理它们;内置功能对象前都需要加#号,内置对象一般都以s结尾;

#dates: java.util.Date对象的实用方法,

#calendars: 和dates类似, 但是 java.util.Calendar 对象;

#numbers: 格式化数字对象的实用方法;

#strings: 字符串对象的实用方法: contains, startsWith, prepending/appending等;

#objects: 对objects操作的实用方法;

#bools: 对布尔值求值的实用方法;

#arrays: 数组的实用方法;

#lists: list的实用方法,比如#sets: set的实用方法;#maps: map的实用方法;#aggregates: 对数组或集合创建聚合的实用方法;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值