Thymeleaf方法如何在SpringBoot中使用

  介绍

Thymeleaf方法如何在SpringBoot中使用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

Thymeleaf是最近SpringBoot推荐支持的模板框架,官网在thymeleaf.org这里。

我们为什么要用Thymeleaf来作为模板引擎呢?官网给了我们一个非常令人信服的解释:

Thymeleaf现代服务器端Java是一个模板引擎的web和独立的环境.>

基本写法就像下面这样:

& lt; table>   & lt; thead>   & lt; tr>=& lt; th:文本“# {msgs.headers.name}“祝辞Name=& lt; th:文本“# {msgs.headers.price}“祝辞Price   & lt;/tr>   & lt;/thead>   & lt; tbody>   & lt; tr th:每个=按碳?$ {allProducts}“比;   & lt; td th:文本=? {prod.name}“祝辞Oranges=& lt; td th:文本“$ {# numbers.formatDecimal(刺激。价格,1,2)}“祝辞0.99 & lt;/td>   & lt;/tr>   & lt;/tbody>   & lt;/table>

没错,由于这个模板是以xml的格式以属性的形式嵌入在html里,因此不仅适合后台人员使用,也能直接在没有后台程序的情况下直接由浏览器渲染,因为浏览器会自动忽视html未定义的属性。

这个属性还是非常吸引人的,毕竟我们做后台最麻烦的就是在乱七八糟的前台模板加代码,加完代码之后前台的也不知道加的代码对不,对非得先跑一遍才能知道。如果模板文件能够直接由前端人员编写那该多好,而且前端人员在编写的时候就能知道这个代码能不能跑,岂不是非常开心?

Thymeleaf的文档链接在这里,细节可以直接去搜索、下面主要列举下我经常遇到的一些问题。

由于我们很多的IDE都会提供很好的提示工作,因此我们有必要告诉IDE我们使用的模板规范以方便他给我们提供服务.Thymeleaf的一般规范是这样的:

& lt; html xmlns=癶ttp://www.w3.org/1999/xhtml"   xmlns: th=癶ttp://www.thymeleaf.org"比;   …   & lt;/html>

把我们需要编写的DOM放在这个html标签里面就好了。
这句话做了什么事呢?其实就是定义了一个叫th的名空间,所有Thymeleaf的属性都是在这个名空间下面。

我们知道一个网页中加载的静态文件通常有一个十分尴尬的问题,比如对于引导。css,就是如果我们能让IDE识别这个文件,那么我们得用相对路径来引入这个文件。这样我们的IDE才能加载到这个文件,并且给予我们相应的提示。但是如果我们想要在发布后服务器能够加载这个文件,我们就必须用相对于资源或者静态的位置来引入静态文件。显然,一般情况下我们不能兼顾这两个问题,只能要么在编写的时候用相对自己的路径,然后在发布的时候用相对于项目资源文件夹的路径,要么就只能放弃IDE的提示,非常尴尬。

而在Thymeleaf中,我们可很好的处理这一点。在引入资源的时候,我们可以写类似下面的代码:

& lt;链接rel=皊tylesheet"类型=拔谋?css"媒体=癮ll"   href=https://www.yisu.com/zixun/css/gtvg.css”rel="外部nofollow”th: href=" @ {/css/gtvg。外部nofollow”css} " rel="/>

当我们在没有后台渲染的情况下,浏览器会认得href,但是不认得th: href,这样它就会选择以相对与本文件的相对路径去加载静态文件。而且我们的IDE也能识别这样的加载方式,从而给我们提示。

当我们在有后台渲染的情况下,后台会把这个标签渲染为这样:

& lt;链接rel=皊tylesheet"类型=拔谋?css"媒体=癮ll"href=https://www.yisu.com/zixun/?css/gtvg.css”rel="外部nofollow”/>

原来的href标签会被替换成相对于项目的路径,因此服务器就能找到正确的资源,从而正确渲染。

非常的智能而且方便。

这里需要注意到所有的路径我们是用“@{}”来引用,而不是“${}”,因为后者是用来引用变量名的,而前者是引用路径的,因此我们在这里用的是前者。可是如果我们是把路径写在变量里,那么就要用后者来引用了。

很多情况下我们并不希望在代码里硬编码进文字,我们希望把文字提取成统一的代号,这样方便管理,也方便更改语言。
我们要做的首先是创建一个语言文件,比如message_chinese。属性:

title=这是标题   消息1=这是消息2   message2=这是消息2   ....

然后我们在<代码>应用程序。属性> spring.messages。basename=message_chinese

Thymeleaf方法如何在SpringBoot中使用