4 标准表达式语法

我们将暂停开发我们的虚拟杂货店,来学习Thymeleaf标准方言里最重要的部分:Thymeleaf标准表达式语法。

我们已经看过了两种有效的表达属性值的语法:信息和变量表达式。如下:

  1. <p th:utext="#{home.welcome}">Welcome to our grocery store!</p>
  2. <p>Today is: <span th:text="${today}">13 february 2011</span></p>

然而,还有更多类型的表达式,甚至已经学习过的表达式也还有更多有趣的细节需要学习。首先,让我们看看对标准表达式特性的总结:

  • 简单表达式:
    • 变量表达式: ${...}
    • 选择变量表达式: *{...}
    • 信息表达式: #{...}
    • 链接URL表达式: @{...}
    • 分段表达式: ~{...}
  • 字面量
    • 文本字面量: ‘one text’, ‘Another one!’,…
    • 数字字面量: 0, 34, 3.0, 12.3,…
    • 布尔字面量: true, false
    • Null字面量: null
    • 字面量标记:one, sometext, main,…
  • 文本运算:
    • 字符串拼接: +
    • 字面量置换: |The name is ${name}|
  • 算术运算:
    • 二元运算符: +, -, *, /, %
    • 负号(一元运算符): (unary operator): -
  • 布尔运算:
    • 二元运算符: and, or
    • 布尔非(一元运算符): !, not
  • 比较和相等:
    • 比较: >, <, >=, <= (gt, lt, ge, le)
    • 相等运算符: ==, != (eq, ne)
  • 条件运算符:
    • If-then: (if) ? (then)
    • If-then-else: (if) ? (then) : (else)
    • Default: (value) ?: (defaultvalue)
  • 特殊标记:
    • 无操作: _

所有这些特性可以结合或者嵌套:

  1. 'User is of type ' + (${user.isAdmin()} ? 'Administrator' : (${user.type} ?: 'Unknown'))