浅谈Thymeleaf模板

Thymeleaf模板是一个流行的模板引擎,该模板引擎采用Java语言开发;

模板引擎是一个技术名词,是跨领域跨平台的概念,在Java语言体系下有模板引擎,在c#.php语言体系下也有模板引擎,甚至在JavaScript中也会用到模板引擎技术;

Java生态下的模板引擎有Thymeleaf、Freemarker、Velocity、Beetl(国产)等;

Thymeleaf模板既能用于web环境下,也能用于非web环境下,在非web环境下,它能直接显示模版上的静态数据,在web环境下,它能直接显示模版上的静态数据,在web环境下,它能像JSP一样从后台接收数据并替换掉模板上的静态数据;

Thymeleaf它是基于HTML的,以HTML标签位载体,Thymeleaf要寄托在HTML的标签下实现对数据的展示;

Thymeleaf的官方网站:http://www.thymeleaf.org;

springboot集成了Thymeleaf模版技术,并且springboot官方也推荐使用Thymeleaf;

集成Thymeleaf:

       第一步:在maven中引入Thymeleaf的依赖,加入以下依赖配置即可:

             

                 org.springframework.boot

                spring-boot-starter-thymeleaf

             

       第二步:在spring boot的核心配置文件application.properties中对Thymeleaf进行配置

            #开发阶段,建议关闭thymeleaf的缓存

             spring.thymeleaf.cache=false

            #使用遗留的html5以去掉html标签的校验

             spring.thymeleaf.mode=LEGACYHTML5

          在使用springboot的过程中,如果使用thymeleaf作为模版文件,则要求html格式必须位严格的html5格式,必须有结束标签,否则会报错;

         如果不想对标签进行严格认证,使用spring.thymeleaf.mode=LEGACYHTML5去掉验证去掉验证需要引入下面的依赖,否则会报错:

             

                    net.sourceforge.nekohtml

                   nekohtml

             

           

                  org.unbescape

                 unbescape

                1.1.5.RELEASE

           

        spring1.5默认使用的是Thymeleaf2版本 ,spring2.0默认使用的是Thymeleaf3版本;

        nekohtml是一个Java语言的HTML扫描器和标签补全器,这个解析器能够扫描HTML文件并“修正”html文档中的常见错误;

        nekohtml能增补缺失的父元素、自动用结束标签关闭相应的元素,修复不匹配的内嵌元素标签等;

       springboot使用Thymeleaf作为视图展示,约定将模板文件放置在src/main/resource/templates目录下,静态资源放置在    src/main/resource/static目录下,html 页面html元素中加入属性:;

 

Thymeleaf的标准表达式

     1. 标准变量表达式

         语法:$ {...}

              变量表达式用于访问容器(tomcat)上下文环境变量中的变量,功能和JSTL中的${}相同;

              thymeleaf中的变量表达式使用${变量名}的 方式获取其中的数据;

              小强 其中th:text=""是Thymeleaf的一个属性,用与文本的显示;

 

     2. 选择变量表达式

             选择变量表达式首先使用th:object来绑定后台传过来的xx对象,然后使用*来代表这个对象,后面{}中的值是此对象的属性;

              选择变量表达式 *{...}是另一种类似于变量表达式${...}表示变量的方法;

              选择变量表达式在执行时是在选择的对象上求解,而${...}是在上下文的标量模型上求解;

              通过th:object属性指明选择变量表达式的求解对象;

               

                   小强

               

              选择表达式首先使用 th:object来绑定后台传过来的对象,然后使用*来代表这个对象

              标量表达是和选择表达式也可以混合使用

              也可以不使用th:object进行对象的选择,而直接使用*{...}获取数据,

             

xx

                    ** thymeleaf与html语法也可以混合使用互不影响

   3 .url表达式

       语法:@{...}

           URL表达式可用于

                       

       th:text

                  用于文本的显示

                 

       th:vaule

                     类似于html标签中的vaule属性,能对某元素的value属性进行赋值

                   

       th:attr

                 

                 

       th:onclick

                 

       th:style

                    设置样式,th:style="'display:none;'" block

      th:method

                      设置请求方法;

      th:name

                   设置表单名称;

                     

      th:inline

                    内联文本,内联脚本;th:inline有三个取值类型{text ,javascript和none}

                   该属性使用内联表达式[[...]]表示变量名称,

                  [[${描述}]]

                  th:inline写在任何父标签都可以,

                  [[${描述}]]

                内联脚本

                   

 

Thymeleaf字面量

      文本字面量

                用单引号'...'包围的字符串为文本字面量,如

               

      数字字面量

               

                可以运算结果为2019

       boolean字面量

                   true和false

       null字面量

                null

Thymeleaf字符串拼接

           字面量拼接通过使用“|”减少字符串拼接,当两个|之间的可以像中文一样挨着写,不需要再拼接

           

           <==>

           

Thymeleaf三元运算符判断

         

Thymeleaf运算和关系运算

         算术运算:+、-、*、/、%

         关系比较:>,<,>=,<=,(gt,lt,ge,le)

         相等判断:==,!=(eq,ne)

Thymeleaf表达式基本对象

        模板引擎提供了一组内置的对象,这些内置的对象可以直接在模板中使用,这些对象由#好开始引用

        官方手册:http://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html

         #request:

                       相当于HttpServletRequest对象,这是3.x版本,在2.x版本中使用#httpServletRequest;

                            ${#request.getContextPath()}

                            ${#request.getAttribute("xx")}

        #session:

                    相当于HttpSession对象,这是3.x版本,在2.x版本中使用#httpSession;

 

Thymeleaf表达式功能对象

           模版引擎提供的一组功能性内置对象,可以在模板中直接使用这些对象提供的功能方法;

           工作中常使用的数据类型,如集合,时间,数值,可以使用thymeleaf提供的功能性对象来处理它们;

            内置功能对象前都需要加#号,内置对象一般都以s结尾;

            官方手册同上

             #dates: java.util.Date对象的实用方法,

             #calendars: 和dates类似,但是java.util.Calendar对象;

             #numbers: 格式化数字对象的实用方法;

             #strings: 字符串对象的实用方法:contains,startsWith,prepending/appending等;

                         

             #objects: 对objects操作的实用方法;

             #bools: 对布尔值求值的实用方法;

             #arrays: 数组的实用方法;

             #lists: ist的实用方法;如

             #sets: set的实用方法;

             #maps: map的实用方法;

             #aggregates: 对数组或集合创建聚合的实用方法;

你可能感兴趣的:(前端)