开发者学堂课程【SpringBoot快速掌握 - 核心技术: thymeleaf 语法】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/612/detail/9243
thymeleaf 语法
内容介绍:
一、 Thymeleaf 使用
二、 Thymeleaf 语法规则
一、Thymeleaf使用
configurationProperties (prefix = "spring.thymeleaf)
public class ThymeleafProperties {
private static final Charset DEFAULT_ EMCODING - Charset.forName ("UTF-8");
private static final MNimeType DEFAULT_CONTENT_TYPE = NimeType.valueOf("text/html");
public static final Striing DEFAULT_PREFIX ="classpath:/templates/";
//默认前置
public static final String DEFAULT_SUFFIX- ".html";
//默认后置
//只要我们把 HTML 页面放在classpath:/templates/, thymeleaf就能自动渲染;
在 controller 中写一个请求:
@RequestMapping("/success")
public String success{
/
/cLasspath:/templatesysuccess.htm
l
return "success";
}
新建一个 success.html 文件
!DOCTYPE htm1>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</tit1e>
</head>
<body>
<h1>
成功!k/h1>
</body>
</htm1>
运行在浏览器查看:localhost:8080/success
查看结果为:成功!
这个功能就是 thymeleaf 帮我们实现的
1、导入 thymeleaf 的名称空间
<html lang="en" xmlns:th="http://www.thymeleaf.ong"">
2、使用 thymeleaf 语法;
Controller 中 success 代码:
/查出一些数据,在页面展示
@RequestMapping("/suecess")
public String success(Map<String,0bject> map){
map.put( "he1lo","你好");
return "success";
}
Html 文件内容:
< !DOCTYPE html>
<html langm"en” xmlns:th=“http:// wnwnw.thymeleaf.org">
<head>
<meta charset-"UTF-8">
<titl
e
>Title</title>
</head>
<body>
<h1>
成功!</h1>
<!--th:text将 div 里面的文本内容设置为${ hello }--->
<div th:text="${hello}">
这是显示欢迎信息
</div>
</body>
</html>
直接启动访问
返回成功!
你好
表示取值成功
二、Thymeleaf语法规则
1 、 th:text;改变当前元素里面的文本内容;
可以用th :任意 html 属性;来替换原生属性的值
例如:<div id="div01"elass="myDiv" th:id="${hello}
Fragment inclusion
片段包含
:jsp:include
th: insert
th: replace
Fragment iteration
//
遍历
:c:forEach
T
h
:
each
Conditional evaluation
条性判断:c:if
th :if
th: unless
th : switch
th: case
Local variable definition
声明变量,c:set
th: object
th :with
General attribute modification
任意属性修改支持prepend, append
th: attr
th: attrprepend
th: attrappend
Specific attribute modification
修改指定属性默认值
th:
value
th:
href
th:
src
Text (
tag body modification
)
//修改标签体内容
th : text//转义特殊字符
th : utext//不转义特殊字符
Fragment specification
//声明片段
th:
fragment
Fragment removal
2、表达式?
Simple expressions:(表达式语法)2
Variable Expressions: $..}: 获取变量值;OGNL,
3、获取对象的属性、调用方法
4、使用内置的基本对象:
#ctx : the context object.
#vars: the context wariables.
#locale : the context locale.
#request : (only in Meb Contexts) the HttpServletRequest object.
#response : (only in web Contexts)the HttpServletResponse object.
#session:(only in Meb Context5)the HttpSession object.
#servletContext :(only in web Contexts) the ServletContext object.
怎么用:${session.foo}
5.内置的一些工具对象:
#execInfo : information about the template being processed.
#messages : methods for obtaining externalized messages inside variables expressions,in thesame way as they would be obtained using #{….} syntax.
#uris : methods for escaping parts of URLS/URIS
#conversions : methods for executing the configured conversion service (if any).
#dates : methods for java.uti1.Date objects: formatting,component extraction,etc.#calendars : analogous to
#dates , but for java.util.calendar objects.
#numbers : methods for formatting numeric objects.
#strings : methods for String objects: contains,startsiwith,prepending /appending, etc.
#objects :methods for objects in general.
#bools : methods for boolean evaluation.
#arrays : methods for arrays.
#lists : methods for list5.# sets : methods for setsI
#mapS : methods for maps.
#aggregates : methods for creating aggregates on arrays or collections.
#ids ; methods for dealing with id attributes that might be repeated (for example,as aresult of an iteration).
Selection Variable Expressions:*...)
:选择表达式:和$(在功能上是一样;
补充:配合 th;object=“${Session.user}:进行使用
<div th:object="${SeSsion.user}”>
<p>Name:<span th:text="*
{
firstName}">sebastian</span>-</p>
<P>Surname:cspan th:text="*{lastName ] ">pepper</span>.</P>
<p>Nationality:<spanth:text="*{nationality}">Saturn</span>.</P>
</div>
Message Expressions: #{...}:获取国际化内著
Link URL Expressions: @[..}: 定义URL;
@{/order/ process(execId=s{execId],execType="FAST)3
示例:
<!-- will produce 'http://localhost:8080/gtvg/order /details?orderId=3'(plus rewriting)—
>
<a href="details.html"
th:href="{http://localhost:8080/gtvg/order /details(orderId=o.id))" >view</a>
<!-- will produce '/gtvg/order/details?order Id=3'(plus rewriting)-->
<a href="details.htrl" th:href="(/order /details(orderId=$[o.id])] "-view</a>
<!-- will produce '/gtvg/order /3/details' (plus rewriting) -->
<a href="details.html" th:href="(/order/{orderId}/details(orderId=$[o.id})]".>view</a>
Fragment Expressions: ~{..]:
片段引用表达式
<div th:insert="-{commons :: main]">...</div>
其他用法:
Literals( 字面量 )
Text literals: "one text', 'Another one!’ .nMumber literals:e , 34 , 3.0 ,12.3 l
Boolean literals: true , false
Mull literal: null
Literal tokens: one , sometext , main .
Text operations:(文本操作)
String concatenation:
Literal substitutions: /The name is ${name}
Arithmetic operations:(数学运算)
Binary operators:+,-, *,/,%Minus sign(unary operator):
Boolean operations:
(布尔运算)
Binary operators: and , or
Boolean negation (unary operator): !,not
Comparisons and equality
:(比较运算)
Comparators: >,< , >-, <- ( gt , lt , ge ,le )
Equality operators: =- ,
!=
(eq , ne )
Conditional operators;
条件运算(三元运算符)
If-then:(if)?(then)
If-then-else:(if) ?(then) : (else)Default:(value) ?: (defaultvalue)
Special tokens:|
No-operation: _
6.常见场景调用:
Controller:
//查出用户数据,在页面展示
@RequestMapping("/suecess")
public String success(Map<String,0bject> map){
map
.
put("he11o" , "
<h1>你好</h1>");
map.put("users",Arrays.aslist("zhangsan", "lisi" , "wangwu"));
return "success";
}
Success
.html
<!DOCTYPE htm1>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</tit1e>
</head>
<body>
<h1>
成功!k/h1>
<hr/>
<div th:text="${hello}"></div>
<div th:utext="${hello]"></div><hr/>
<! --th:each每次遍历都会生成当前这个标签:3个h4 -->
<h4 th:text="${user}" th:each="user:${users}"></h4>
<hr/>
<h4>
<span th:each="user:${users} ">[[${user]]</span>
</h4>
</body>
</htm1>
重新启动运行显示出正确结果表示模板引擎使用成功