Thymeleaf标准表达式语法

本文详细介绍了Thymeleaf的表达式语法,包括信息表达式、变量表达式、选择表达式、URL链接、基本类型操作以及各种运算和条件表达式。还探讨了Thymeleaf提供的对象,如#dates、#numbers和#strings等,以及在模板中如何格式化日期、创建URL链接和进行条件判断。同时,文章展示了如何利用预处理表达式和设置属性值来处理动态内容。
摘要由CSDN通过智能技术生成

Thymeleaf标准表达式语法

两种简单语法:
<p th:utext="#{home.welcome}">Welcome to our grocery store!</p>
<p>Today is: <span th:text="${today}">13 february 2011</span></p>
  • 简单表示式:

    • 变量表达式: ${…}
    • 选择变量表达式: *{…}
    • 信息表达式: #{…}
    • URL连接表达式: @{…}
  • 文字类型:

    • 字符型: ‘one text’ , ‘Another one!’ ,…
    • 数值型: 0 , 34 , 3.0 , 12.3 ,…
    • Boolean型: true , false
    • 空值: null
    • 文本字符串: one , sometext , main ,…
  • 字符串操作:
    • 字符串连接: +
    • 文字替换: |The name is ${name}|
  • 数值型操作:
    • 运算符: + , - , * , / , %
    • 负号: -
  • Boolean操作:
    • 运算符: and , or
    • 非运算符: ! , not
  • 比较相等算法:
    • 比较: > , < , >= , <= ( gt , lt , ge , le )
    • 相等算法: == , != ( eq , ne )
  • 条件语句:

    • If-then: (if) ? (then)
    • If-then-else: (if) ? (then) : (else)
    • Default: (value) ?: (defaultvalue)

    所有上面算法都可以随意组合和嵌套:

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

· 条件判断

(if) ? (then) if-then

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

<tr th:class="${row.even}? 'even' : 'odd'">
  ...
</tr>

条件表达式中的三个部分自身也可以是表达式,也可以是变量(${…}, *{…}), 消息(#{…}), URL (@{…}) 或字面量 (’…’)
条件表达式也可以使用括号来嵌套:

<tr th:class="${row.even}? (${row.first}? 'first' : 'even') : 'odd'">
...
</tr>

else表达式也可以省略,当条件为false时,会返回null:

<tr th:class="${row.even}? 'alt'">
...
</tr>

(value) ?: (defaultvalue) Default
只有在第一个表达式返回null时,第二个表达式才会运算

信息表达式

我们之前的例子是这样的

<p th:utext="#{home.welcome}">Welcome to our grocery store!</p>
home.welcome=欢迎光临本店,

但是有的时候我们需要在消息中增加变量,比如客人的名字怎么办?比如达到如下效果

<p>¡Bienvenido a nuestra tienda de comestibles, 木鱼!</p>

这样办:

home.welcome=欢迎光临本店, {0}!
<p th:utext="#{home.welcome(${session.user.name})}">
¡Bienvenido a nuestra tienda de comestibles, 木鱼!
</p>

在这里,参数可以是字符型也可是树数值型或者日期型。当然如果我们需要多个参数的话,类推即可,并且我们也可以内嵌表达式替换字符串,比如:

<p th:utext="#{${welcomeMsgKey}(${session.user.name})}">
Welcome to our grocery store, 木鱼!
</p>

变量表达式

变量表达式可以解析OGNL语法。详尽的语法信息可以访问官网:
http://commons.apache.org/ognl/

系统基本对象

OGNL有以下基本内置对象

  • #ctx : the context
  • #object. vars: the context variables.
  • #locale : the context locale.
  • #httpServletRequest : (only in Web Contexts)theHttpServletRequest object.
  • #httpSession : (only in Web Contexts) the HttpSession object.
    所以我们可以用如下方式引用:
Established locale country: <span th:text="${#locale.country}">US</span>.

Thymeleaf提供的对象

除了这些基本的对象,Thymeleaf将为我们提供一套实用的对象。来帮助我们我们执行常见的任务。

  • #dates : 为 java.util.Date对象提供工具方法,比如:格式化,提取年月日等.
  • #calendars : 类似于#dates , 但是只针对java.util.Calendar对象.
  • #numbers : 为数值型对象提供工具方法。
  • #strings :为String 对象提供工具方法。如: contains, startsWith, prepending/appending等。
  • #objects : 为object 对象提供常用的工具方法。
  • #bools : 为boolean 对象提供常用的工具方法。
  • #arrays : 为arrays 对象提供常用的工具方法。
  • #lists :为lists对象提供常用的工具方法。
  • #sets : 为sets对象提供常用的工具方法。
  • #maps :
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值