Thymeleaf 教程

标准表达式语法

  • 简单的表达式

    • 变量表达式: $

    • 选择变量表达式: *

      tips
      *{...} 选择表达式【和 ${}在功能上是一样的】

      [[${...}]] ,双中括号,就是 th:text 会转义

      [(${...})] ,中括号小括号,就是 th:utext 不会转义

    • 消息表达式(获取国际化内容的): #

    • 连接 url表达式: @

    • 代码判断表达式: ~

  • 字面值

    • 文本类型 : 'one text' , 'Another one!' ,…
    • 数字类型 : 0 , 34 , 3.0 , 12.3 ,…
    • 布尔类型 : true , false
    • 空值类型 : null
    • 文本标记 : one , sometext , main ,…
  • 文本处理

    • 字符串连接:+
    • 文本替换:|The name is ${name}|
  • 算数运算符

    • 二进制运算符:+,-,* ,/,%
  • 负号

    • 一元运算符:-
  • 布尔运算符:

    • 二进制运算符:and,or
    • 不二否定(一元运算符):!,not
  • 比较和相等运算符:

    • 比较运算符:>,<,>=,<= (gt,lt,ge,le)
    • 相等运算符:==,!= (eq,ne/neq)
  • 条件运算(三元运算也支持)
    If-then: (if) ? (then)
    If-then-else: (if) ? (then) : (else)
    Default: (value) ?: (defaultvalue)

  • 特别的字符

    • 空操作符:_
  • If-then: (if) ? (then)

  • If-then-else: (if) ? (then) : (else)

  • Default: (value) ?: (defaultvalue)
    image

th:each

<table>
    <tr>
        <th>NAME</th>
        <th>PRICE</th>
        <th>IN STOCK</th>
    </tr>
    <tr th:each="prod : ${prods}">
        <td th:text="${prod.name}">Onions</td>
        <td th:text="${prod.price}">2.41</td>
        <td th:text="${prod.inStock}? #{true} : #{false}">yes</td>
    </tr>
</table>
  • ${prods}:需要被循环的变量
  • prod:循环变量
<table>
    <tr>
        <th>NAME</th>
        <th>PRICE</th>
        <th>IN STOCK</th>
    </tr>
    <tr th:each="prod,iterStat : ${prods}" th:class="${iterStat.odd}? 'odd'">
        <td th:text="${prod.name}">Onions</td>
        <td th:text="${prod.price}">2.41</td>
        <td th:text="${prod.inStock}? #{true} : #{false}">yes</td>
    </tr>
</table>
  • iterStat 迭代状态变量

th:case

<div th:switch="${user.role}">
	<p th:case="'admin'">User is an administrator</p>
	<p th:case="#{roles.manager}">User is a manager</p>
</div>
<div th:switch="${user.role}">
	<p th:case="'admin'">User is an administrator</p>
	<p th:case="#{roles.manager}">User is a manager</p>
	<p th:case="*">User is some other thing</p>
</div>

片段包含

th:insert 将简单的插入指定宿主标签的标签体中。
th:replace 实际上用指定的片段替换其宿主标签。
th:inlude 类似th:insert,而不是插入片段,它直插入片段的内容

<footer th:fragment="copy">
    &copy; 2011 The Good Thymes Virtual Grocery
</footer>

<body>
    <div th:insert="footer :: copy"></div>
    <div th:replace="footer :: copy"></div>
    <div th:include="footer :: copy"></div>
</body>

<body>
    <div>
        <footer>
            &copy; 2011 The Good Thymes Virtual Grocery
        </footer>
    </div>
    <footer>
        &copy; 2011 The Good Thymes Virtual Grocery
    </footer>
    <div>
        &copy; 2011 The Good Thymes Virtual Grocery
    </div>
</body>

内置对象

  • 在对上下文变量计算OGNL表达式时,一些对象可用于表达式,以获得更高的灵活性。这些对象将以#符号开始引用(按照OGNL标准)
  • #ctx : the context object(上写问对象).
  • #vars: the context variables(上下文变量).
  • #locale : the context locale(上写区域设置).
  • #request : (only in Web Contexts) the HttpServletRequest object(仅在web上下文中 HttpServletRequest对象).
  • #response : (only in Web Contexts) the HttpServletResponse object(仅在web上下文中 HttpServletResponse对象).
  • #session : (only in Web Contexts) the HttpSession object(仅在web上写文中 HttpSession对象).
  • #servletContext : (only in Web Contexts) the ServletContext object(仅在web上下文中 ServletContext对象).

内置工具对象

  • #execInfo : 有关正在处理的模板的信息
  • #messages : 用在变量表达式总获取外部化消息的方法,与#{}语法获得的方式相同.
  • #uris : 转义 url/url部分的方法.
  • #conversions : 执行配置的转换服务(如果有的话)的方法.
  • #dates : java.util.Date 对象的方法:格式化,组件提取等.
  • #calendars : 类似 #dates , 但对于 java.util.Calendar 对象.
  • #numbers : 用于格式化数字对象的方法.
  • #strings : String对象的方法: contains, startsWith, prepending/appending, etc.
  • #objects : objects的方法.
  • #object : 用来获取的它内置对象.
  • #bools : 布尔对象方法.
  • #arrays : 数组的方法.
  • #lists : methods for lists.
  • #sets : methods for sets.
  • #maps : methods for maps.
  • #aggregates : 在数组或集合上创建聚合的方法.
  • #ids : 处理可能重复的id属性的方法(例如,作为迭代的结果).
posted @ 2021-09-22 08:41  MikiKawai  阅读(279)  评论(0编辑  收藏  举报