现在虽然Vue、React等前端框架盛行,但是部分需要SEO的页面,还是得用thymeleaf之类的模板引擎来渲染。thymeleaf的官方文档,写的太过详细,显得比较啰嗦。本文主要是把thymeleaf官方的英文文档,结合作者自己的使用经验,整理成了一篇可以用来速查的中文教程,方便大家。其中,一些使用起来不方便或使用频率低的语法,本文直接跳过不写了。
th:text
是最常用的语法,用来将一个字符串赋值到对应的标签内。比如:,意思就是把car这个对象的color填入到a标签内。不过要注意,这里的字符串,不能包含HTML标签,会被转义或过滤。
th:utext
类似上面的,区别是输出的字符串,是可以包含HTML标签、字符的。比如你要把一段HTML字符串填入一个div中,那就必须使用了。
属性赋值
例如:、、等等,和类似的用法,只不过赋值到了对应HTML标签的属性上。PS:thymeleaf支持的属性赋值太多了,有很多使用频率很低。所以记忆常用的就可以,遇到生僻的属性需要赋值,可以先用试试,如果不支持或报错,就用下面的自定义属性赋值来解决。
自定义属性赋值
主要用来给HTML标签上,我们自定义的属性赋值。比如
字符串拼接
或者,或者两个变量拼接
格式化日期
,其中time是后端的变量,类型是Java的Date。
内置对象
可以理解为,springboot中的很多基础对象,无需通过赋值,即可在thymeleaf模板中使用。
- 上下文对象
- 同 #ctx,表示上下文变量
- 上下文本地化(特定的地理区域)变量,可参考 java.util.Locale
- HttpServletRequest 对象,可参考 javax.servlet.http.HttpServletRequest
- HttpServletResponse 对象,可参考 javax.servlet.http.HttpServletResponse
- HttpSession 对象,可参考 javax.servlet.http.HttpSession
- ServletContext 对象,可参考 javax.servlet.ServletContext
以request举例,用法:
th:if
意思是:当变量a不等于null时,显示这个p标签。最新版的thymeleaf和Springboot中,里面的大于、小于、等于、不等于已经不需要再使用eq、ne、gt、lt等符号了,直接用java代码里的、之类的就可以了。
三元表达式
例如,和Java中的三元表达式类似。部分情况下,三元表达式能很好的弥补thymeleaf只有if没有else的尴尬局面。
th:switch
直接看代码就理解了
th:each
循环,使用频率非常高。用来将后端传过来的List等,遍历输出。重点提示:所在的标签本身,也会循环。比如你要实现一个ul标签里,循环li标签。那么应该写在li标签上。
上面的代码中,后端传过来的List是hotArticle,articleData相当于hotArticle这个List里的一项。需要特别注意的是th:each里面那个k,这个变量里包含了很多常用的东西,比如k.index就是循环的index,从0开始。有点像Java代码里for循环里面的i。
赋值给JavaScript变量
一定要在JavaScript的标签里添加,然后用来包围后端变量赋值即可。例如:
赋值给css style
类似赋值给JavaScript,也一定要在标签里添加,然后就可以使用[[]]包围的变量,在css任意地方使用了。可以是css的class,也可以是具体的css属性值。例如:
模板操作逐渐被淘汰了,主要作用是一些公共页面HTML代码片段的提取,比如header、footer之类的。随着现在webpack等前端工作流的兴起,使用这些工具就可以达到HTML公共代码片段的随处引用。所以,模板操作这里就不讲了。
就是thymeleaf内置的各种函数,比如日期格式化、数字四舍五入、字符串截取、查找、拼接等等。这块根据实际经验,建议也不要大规模应用。有需要数据处理的场景,尽量让后端完成。因为HTML模板中,各种单引号、双引号互相包含,各种标签缩进嵌套等等,很容易造成一些书写上的错误,并且不一定会报错被发现。在HTML代码中大量使用逻辑控制,是一个风险很高的操作。
所以本文尽量只介绍影响数据展示,但不改变数据值的常用预处理:
数字前方补零
结果是
千分位处理
效果,替换为,就可以使用空格分隔。
生成数组-常用于循环输出一些相似数据
效果如下:
字符串判空(null或长度=0)
,返回值是Boolean
默认值设置
,当text为null时,使用默认值。
大小写转换
和
获取字符串长度
还有很多thymeleaf函数可以用来处理后端赋值的变量,但是实际很少使用。主要原因就是上面提到的风险和记忆起来实在困难。thymeleaf的很多语法和java类似,有些又不太一样,所以记忆起来很费劲。
判断list是否为空
- List不为空:
- List为空:
- 获取List的size:
- 判断list是否包含某个元素:,返回值是boolean
其中,relationData是java传递过来的List数组。
thymeleaf map相关操作
- map不为空:,返回值是boolean
- 获取map的size:,返回值是int
- 判断map是否包含某个key:,返回值是boolean
- 判断map是否包含某个value:,返回值是boolean
预定义处理函数还有很多很多,这里就不一一列举了。下面给大家提供可以查询这些函数的链接以及使用方法。thymeleaf函数文档,使用方法如下图所示:
到此这篇spring教程网站(spring官方教程)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/30740.html