记录几个比较容易忘记的Thymeleaf标准表达式语法,例子基于Spring MVC。
变量表达式${ }
在控制器中往页面传递几个变量:
1 |
|
在页面中使用变量表达式${}
来获取它们:
1 | <p th:utext="${user.name}"></p> |
可以看到变量表达式不但可以获取变量的属性值,甚至还可以访问变量的方法(getName()和upcaseName())。session代表HttpSession对象。
选择表达式*{ }
选择表达式的使用方法如下所示:
1 | <div th:object="${session.user}"> |
*{}
代指th:object
所指定的对象,即${session.user}
。
URL链接表达式@{ }
URL链接表达式会给URL自动添加上下文的名字。比如:
1 | <a th:href="@{/main}">main</a> |
解析后的href值为http://localhost:8080/thymeleaf/main
。
当需要在URL中传递参数时,比如这样http://localhost:8080/thymeleaf/main?name=KangKang
,可以如下操作:
1 | <a th:href="@{/main(name=${session.user.name})}">main</a> |
传递多个参数:
1 | <a th:href="@{/main(name=${session.user.name},age=${session.user.age})}">main</a> |
路径变量的写法:
1 | <a th:href="@{/main/{name}(name=${session.user.name})}">main</a> |
后端接受路径变量:
1 | "main/{name}") (value= |
字面量
文本常量
文本常量指的是单引号之间的字符串,比如:
1 | <p th:text="'Welcome KangKang'"></p> |
数字常量
1 | <p>The year is <span th:text="2017">1492</span>.</p> |
Boolean类型的常量
Boolean类型的常量就是true和false。例如:
1 | <div th:if="${user.isAdmin()} == false"> ... |
Null常量
1 | <div th:if="${variable.something} == null"> ... |
字面量替换
除了使用'...' + ${}
来连接字面量和变量外,还可以使用|...|
来代替,比如:
1 | <p th:utext="|hello,${session.user.name},your age is ${session.user.age}|"></p> |
等价于:
1 | <p th:utext="'hello,'+${session.user.name}+',your age is '+${session.user.age}"></p> |
在| ... |
字面替换中只允许有变量表达式${...}
条件表达式
条件表达式实际上就是三目运算符。比如:
1 | <tr th:class="${row.even}? 'even' : 'odd'"> |
条件表达式也可以使用括号嵌套:
1 | <tr th:class="${row.even}? (${row.first}? 'first' : 'even') : 'odd'"> |
else表达式也可以省略,在这种情况下,如果条件为false,则返回空值:
1 | <tr th:class="${row.even}? 'even'"> |
默认表达式
默认表达式是一种特殊类型的条件值,不带then部分。比如:
1 | <p th:utext="${session.user.sex} ?: 'sex is unknown'"></p> |
表示,当${session.user.sex}
为null
时,值为sex is unknown,否则为表达式的值。这就好像为表达式指定了一个默认值一样。其等价于:
1 | <p th:utext="${session.user.sex != null} ? ${session.user.sex}: 'sex is unknown'"></p> |
更详细的内容可参考官方文档:http://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#standard-expression-syntax