最近在学习Thymeleaf,以前没有接触过,不过像这样的模板引擎大致与jsp语言相差不大
在这里整合了一下两个大佬博客的内容,主要是记录给自己看一下
先附上两位大佬的地址(若侵请联系我,我只是大自然的搬运工):
https://www.jianshu.com/p/84a25d699cf5
https://blog.csdn.net/qq_33535433/article/details/78876693
1.java模板引擎,能够处理HTML,XML,JavaScript,CSS甚至是纯文本。类似于JSP和Freemarker;
2.作用就是把各个用户的公用的东西(页面)做一个提取,然后再根据不同的数据对页面进行渲染(个人理解就是可以做到静态动态分离,即前端可以根据需求绘画页面,无后台也可以正常显示静态页面,若有后台链接的时候,可以直接将数据嵌入进入进行渲染);
3.语法优雅易懂,支持这两种OGNL,SpringEL编码方式;
4.遵循Web的标准,支持HTML5.
// 变量表达式
2.消息表达式,也称为文本外部化,国际化或者i18n
...
```
3.链接表达式
@{…}
链接表达式可以是相对的,在这种情况下,应用程序上下文将不会作为URL的前缀
也可以是服务器相对(同样的,没有应用文程序上下文前缀)
和协议相对(就像绝对URL,但是浏览器将使用在显示的页面中使用的相同的HTTP协议或者HTTPS协议)
当然,link表达式可以使绝对的
...
4.算术操作
+、-、x、/
<、>、>=、<= 对应 gt、lt、ge、le
==、!= 对应eq、ne
条件运算符:三目运算符(?:)
5.设置属性值
设置任意的属性值
th:attr="action=..."
设置值到指定的属性
th:action="..."
th:value="..."等
固定值布尔属性
checked或者checked = "checked"
th:chaecked="${user.active}"
readonly
default
hidden
selected等
6.迭代器(循环)
th:each
将数组或者链表循环打印出来
数组、list、,map
状态变量:index(从0开始),count(从1开始),size(元素总数)current(当前迭代的变量),even/add(奇数还是偶数),first(当前迭代是不是第一个),last当前迭代是不是最后一个)
7.条件语句
th:if
th:unless
switch与case结合使用
8.模板布局
定义:th:fragment=".名称"
引用:
th:insert="":简单地插入指定的片段作为正文的主标签
th:replace="":用来指定实际片段来替换其主标签
th:include="":类似于th:insert,但是不是插入片段,他只是插入此片段的内容(3.0版本后,不再推荐使用)
不使用th:fragment=“名称”;
使用id="id"
引用:th:insert="~{footer::#id}"
当在同一个标签中用了多个的属性,谁先别执行?详细可以查看thymeleaf的文档
th:insert=th:replace>th:each>th:if=th:unless=th:switch.....
按照属性的优先级先后执行,与属性的编写的先后顺序无关
10.注释
标准的HTML/XML的注释
thymeleaf解析器级注释块(即有两个包含反斜线的注释)
原型注释块:当模板静态打开的时候,也就是原型设计,不需要用到别注释的代码;而在模板被执行的时候,被注释掉的这一部分原型代码就能别识别出来,并正常显示出这部分代码的作用
11.表达式的基本对象
(1)基本对象:#ctx:上下文对象
-: #locale
(2)request/session等属性
(3)web上下文对象
#request:直接访问当前的请求关联的javax.servlet.http.HttpServletRequest对象
#session:直接访问与当前请求关联的javax.servlet,http.HttpSession对象
#servletContext:直接访问与当前请求关联的javax.servlet.ServletContext对象
不为空
为空
空的
相同于jack,
相同于ywj,
不相同于jack,`
包ez
包j
包j
//用于检测字符串是否以指定的前缀开始。返回布尔类型
${#strings.startsWith(name,'o')}
//用于测试字符串是否以指定的后缀结束。
${#strings.endsWith(name, 'o')}
${#strings.indexOf(name,frag)}// 下标
${#strings.substring(name,3,5)}// 截取
${#strings.substringAfter(name,prefix)}// 从 prefix之后的一位开始截取到最后,比如 (ywj,y) = wj, 如果是(abccdefg,c) = cdefg//里面有2个c,取的是第一个c
${#strings.substringBefore(name,suffix)}// 同上,不过是往前截取
${#strings.replace(name,'las','ler')}// 替换
${#strings.prepend(str,prefix)}// 拼字字符串在str前面
${#strings.append(str,suffix)}// 和上面相反,接在后面
${#strings.toUpperCase(name)} //将所有字符转换成大写
${#strings.toLowerCase(name)} //将所有字符转换成小写
${#strings.trim(str)} //去掉前后空格
${#strings.length(str)} //返回字符长度
${#strings.abbreviate(str,10)}// 我的理解是 str截取0-10位,后面的全部用…这个点代替,注意,最小是3位
若喜欢,请为搬运工点赞。。。
若有错,请指正。。。
若讨厌,请留言并上边×号左键单击