[学习]thymeleaf模板渲染引擎

简介

thymeleaf 是java的模板渲染引擎(类似于freemarker,velocity),优点嘛就是分割了设计和开发团队,互不干扰,入侵性比较小.主要可以处理 html,xml,text,javascript,css,raw 这已经全活儿了. 意思是绝对够用了,好了,开始吧.

基础语法

  • step1: 增加th 标签库,要不h5页面不识别会报错. 接下来就可以使用th: 标签了.
  • 文本操作
    • th:text 文本 ,支持国际化.#{key} 或可以获取到*.properties中的国际化文字.
    • context,从上下文中获取数据 ${x} ${param.x} ${session.x} ${application.x}
    • 转意语法 对于<,>需要转意, 也可以通过 th:utext 来渲染源数据.
    • 文本连接
    • 文本替换 如果不想使用+ 好连接,则可以使用竖线包裹,则自动替换变量
  • 标准语法
[学习]thymeleaf模板渲染引擎_第1张图片
QQ图片20161009162717.png
  • 变量
    [学习]thymeleaf模板渲染引擎_第2张图片
    QQ图片20161009163125.png
[学习]thymeleaf模板渲染引擎_第3张图片
QQ图片20161009163357.png
  • 星号表达式({})*
    星号表达式跟#{}一样,都是取值的方法,不过. #{}直接从上下文中取值, 星号表达式则是使用th:object 在外层取值,包括的节点下取值就可以使用星号表达式直接取值了. 井号表达式的简化形式.

  • 链接@{}
    主要应用于th:href 表示链接,可以 是

    • 相对位置 nowpage.html
    • 上下文定位 /nowpage.html
    • 绝对定位 ~/nowpage.html (根目录)
    • 网络位置 //code.jquery.com/jquery-2.0.3.min.js
  • 模板片段 th:insert th:replace

  • ** 三目表达式**
    ...

  • 条件判断(需要转意)

    这里要使用gt进行转意">"

  • 不操作(一般用于三目吧,实在想不出用再那里)
    no user authenticated

  • 日期转换(一般这里使用Calendar对象)
    13 february 2011

  • 预处理表达式(可以直接调用类方法)
    高级应用,了解下${expression}一般配合message进行调用方法.

设置dom属性

th:attr th:value th:action th:href .... 很多dom属性这里应该都支持.
th:attrappend th:attrprepend 属性增加(聚合)

循环

  • 基本循环


    Onions
    2.41
    yes
  • 获取序列


    Onions
    2.41
    yes

条件

th:if th:unless两个正好相反.
th:switch th:case

布局

前面已经介绍过 fragments 了.通过使用th:fragment 构造一个片段.使用th:insert th:include th:replace进行引入片段. 比如

常用的三种语法有

  • ~{templatename::selector 引入某个模板的某个片段
  • ~{templatename} 引入某个模板
  • ~{::selector} 引入当前模板的某个片段

一般定位是通过th:fragment 指定一个片段名称,也可以不指定名称 比如指定一个id ,则可以通过 ,~{templatename:: #id} 进行引入.
参数化模板 模板可以进行传参. 一般采用两种方式

  • th:fragment 声明变量 比如th:fragment="frag (param1,param2)"之后再通过th:replace="::frag (${v1},${v2})"进行传参.
  • th:fragment 不声明变量 ,可以直接传递参数过来
    或者使用

本地变量

th:with 可以赋多个值.

注释

注释
解析后会删除.

区块操作th:block

区块操作主要用于便捷操作,比如循环,可以在dom外部形成包裹,解析之后block模块会被注释掉.

内联表达式(inlining)

[[...]] [(...)] 可以通过th:inline="none" 禁止内联. 一般使用场景为text,js,css 可以动态生成js 或者css

Others

其他内容大部分属于高级内容,暂不记录了.这里记录的内容gou

你可能感兴趣的:([学习]thymeleaf模板渲染引擎)