- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章SpringBoot引入Thymeleaf的实现方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
1.thymeleaf简介 。
thymeleaf是个xml/xhtml/html5模板引擎,可以用于web与非web应用 。
thymeleaf的主要目标在于提供一种可被浏览器正确显示的、格式良好的模板创建方式,因此也可以用作静态建模,thymeleaf的可扩展性也非常棒。你可以使用它定义自己的模板属性集合,这样就可以计算自定义表达式并使用自定义逻辑,thymeleaf还可以作为模板引擎框架.
2.引入thymeleaf 。
引入依赖 。
在maven(pom.xml)中直接引入:
1
2
3
4
5
6
7
8
|
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-thymeleaf</artifactid>
</dependency>
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-web</artifactid>
</dependency>
|
配置thymeleaf 。
在application.yml配置thymeleaf 。
1
2
3
4
5
6
7
8
9
10
11
12
|
server:
port:
8000
spring:
thymeleaf:
cache:
false
# 关闭页面缓存
encoding: utf-
8
# 模板编码
prefix: classpath:/templates/ # 页面映射路径
suffix: .html # 试图后的后缀
mode: html5 # 模板模式
# 其他具体配置可参考org.springframework.boot.autoconfigure.thymeleaf.thymeleafproperties
# 上面的配置实际上就是注入该类的属性值
|
demo示例 。
创建indexcontroller 。
1
2
3
4
5
6
7
8
9
|
@controller
public
class
indexcontroller {
// 返回视图页面
@requestmapping
(
"index"
)
public
string index(){
return
"index"
;
}
}
|
创建index.html 。
1
2
3
4
5
6
7
8
9
10
|
<!doctype html>
<html lang=
"en"
>
<head>
<meta charset=
"utf-8"
>
<title>title</title>
</head>
<body>
hello thymeleaf!
</body>
</html>
|
创建testcontroller 。
1
2
3
4
5
6
7
8
9
|
@restcontroller
public
class
testcontroller {
// 返回整个页面
@requestmapping
(
"/test"
)
public
modelandview test(){
return
new
modelandview(
"test"
);
}
}
|
创建test.html 。
1
2
3
4
5
6
7
8
9
10
11
|
<!doctype html>
<html lang=
"en"
>
<head>
<meta charset=
"utf-8"
>
<title>title</title>
</head>
<body>
hello thymeleaf! </br>
by: modelandview
</body>
</html>
|
3.测试结果 。
4.thymeleaf基础语法及使用 。
1.引入标签 。
html标签里引入xmlns:th="http://www.thymeleaf.org"才能使用th:*这样的语法 。
2.引入url 。
@{...} 。
例如:
<a th:href="@{http://www.baidu.com}" rel="external nofollow" >绝对路径</a> 是访问绝对路径下的url, <a th:href="@{/}" rel="external nofollow" >相对路径</a> 是访问相对路径下的url.
<a th:href="@{css/bootstrap.min.css}" rel="external nofollow" >是引入默认的static下的css文件夹下的bootstrap文件,类似的标签有: th:href 和 th:src 。
3.获取变量 。
通过${}取值,对于javabean的话,使用变量名.属性名获取 。
4.字符串替换 。
<span th:text="'welcome to our application, ' + ${user.name} + '!'"></span> 或者 <span th:text="|welcome to our application, ${user.name}!|"></span> 。
注意:|…|中只能包含变量表达式${…},不能包含其他常量、条件表达式等 。
5.运算符 。
在表达式中可以使用各类算术运算符 例如 (+, -, *, /, %) 例如:th:with="iseven=(${stat.number} % 1 == 0)" 逻辑运算符 (>, <, <=,>=,==,!=) 需要注意的是使用<,>的时候需要转义 。
1
2
|
th:
if
=
"${stat.number} > 1"
th:text=
"'execution mode is ' + ( (${execmode} == 'dev')? 'development' : 'production')"
|
6.条件 。
if/unless th:if是该标签在满足条件的时候才会显示,unless是不成立时候才显示 。
1
|
<a th:href=
"@{/login}"
rel=
"external nofollow"
th:unless=${user.number !=
null
}>login</a>
|
switch thymeleaf支持switch结构,默认属性(default)用*表示 。
1
2
3
4
5
|
<div th:
switch
=
"${user.role}"
>
<p th:
case
=
"'admin'"
>user is an administrator</p>
<p th:
case
=
"#{roles.manager}"
>user is a manager</p>
<p th:
case
=
"*"
>user is some other thing</p>
</div>
|
7.循环 。
1
2
3
4
5
|
<tr th:each=
"prod : ${prods}"
>
<td th:text=
"${prod.name}"
>onions</td>
<td th:text=
"${prod.price}"
>
2.41
</td>
<td th:text=
"${prod.instock}? #{true} : #{false}"
>yes</td>
</tr>
|
8.utilities 。
内置在context中,可以直接通过#访问 #dates #calendars #numbers #strings arrays lists sets maps … 。
5.小结 。
本文讲述了如何在spring boot中引入模板引擎thymeleaf以及thymeleaf基础语法和实际使用 。
本文github地址:https://github.com/ishuibo/springall 。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.
最后此篇关于SpringBoot引入Thymeleaf的实现方法的文章就讲到这里了,如果你想了解更多关于SpringBoot引入Thymeleaf的实现方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
在开始之前,我想指出的是,我已经通过Google进行了一次诚实而真实的搜索,涉及范围很广,无法找到。 我需要(对于我正在开发的项目)所有Delphi(从2007年到最新发布的版本,我不再支持任何早于2
我正在使用 RPM 将 Liquibase 数据库迁移添加到我们当前的产品部署中,并正在寻找一些有关如何实现我的预期目标的建议/技巧。 最好,RPM 能够安装在全新且 Shiny 的开发人员环境以及现
我目前正在使用一本书学习 UITableViewCell。为了在滚动时重用单元格,作者要求修改原始代码以包含一个if()。检查特定重用标识符的单元格是否存在的语句。但是,在添加 if() 之后语句,X
在 C++ 中引入 protected 访问说明符背后的基本原理是什么。举个例子会有帮助。 最佳答案 对于这类问题,我推荐 Bjarne Stroustrup 的The Design And Evol
我正在尝试使用模板参数中给定的维度和类型创建一个可重用的矩阵类。结构本身就是: template struct Matrix { T elements[N* M]; }; 当我尝试实现矩阵乘
我有一个简单的查询: $query1="SELECT * FROM wp_users WHERE now() < (last_login + INTERVAL 6 month)"; $resu
在 Ioke doc 中,ISpec 测试包含在文档中,参见 ioke.org/dok/index.html 这如何用 Ruby 的 RSpec 和 RDoc(或 SDoc)来完成?我找不到任何命令行
在客户端/服务器通信中,我看到来自客户端的 TCP ZeroWindow。 在这种情况之后预期的场景是什么(设置和发送什么标志)? 以下是我可能得到的日志。在这种情况下,服务器发送 RST 数据包来终
来自wikipedia关于 Lambda 函数和表达式的文章: users will often wish to define predicate functions near the place w
我有一个由父 POM 和几个子模块组成的 Maven 项目。它在 Intellij 中编译和运行良好(我假设它使用 javac 而不是 Maven)。 当我运行 maven clean install
所以我刚开始使用 d3.js,但我一直收到 JavaScript 错误,我不知道为什么。我刚刚用 svg 创建了三个圆圈,想用 d3 选择它们。这是我的代码:
Objective C 引入了一种称为 ARC 的技术,以将开发人员从内存管理的负担中解放出来。听起来不错,如果g++也有这个功能,我想C++开发者会很高兴的。 ARC allows you to p
在 package.json 添加 "font-awesome": "^4.7.0" 执行 npm install 在 main.js 引入
为什么 WSDL 引入 wsdl:message?和消息部分? 与在操作参数(输入、输出、故障)中直接使用 XSD 相比,他们可以带来什么优势? 它们(带有 wsdl 消息部分的 wsdl 消息)如何
I already read doc here : https://github.com/laravel/framework/pull/25997 我想知道的是使用 withCount()我们只是加载
我已经为此苦苦挣扎了一段时间,但不太明白发生了什么。我有一个包含 Sides(通常是 2 个)的 Card 实体 - 并且 Cards 和 Sides 都有一个 Stage。我正在使用 EF Code
下面的 swiftUI 代码在 iOS13 上运行良好,但是在使用 iOS14 进行测试时,我在尝试显示模式表时遇到了由强制解包选项引起的 fatal error 。据我所知,工作表不应该尝试为 se
出于个人原因,我需要记忆一下 jsp 上的一些事情 :) 我有一个简单的登录页面: Login First name:
据我了解,PYTHONCASEOK 选项允许通过不区分大小写的匹配来导入模块。但是,由于 python 中的几乎所有内容都区分大小写,为什么它必须启用此选项以实现更惰性的写入。 还有什么介绍的理由吗?
全新的早午餐(和 bower )。我通过 bower 安装了 Bootstrap,我有以下早午餐配置文件: exports.config = # See http://brunch.io/#doc
我是一名优秀的程序员,十分优秀!