Thymeleaf 标准表达式语法
变量表达式${ }
在控制器中往页面传递几个变量:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
@Controller
public class IndexController {
@RequestMapping(value="/index",method=RequestMethod.GET)
public String index(HttpSession session, Model model){
User user = new User();
user.setName("KangKang");
user.setAge(25);
user.setHabbit(new String[]{"football","basketball","swim"});
session.setAttribute("user", user);
model.addAttribute(user);
return "index";
}
}
|
在页面中使用变量表达式${}来获取它们:
|
1
2
3
4
|
<p th:utext="${user.name}"></p>
<p th:utext="${session.user.getName()}"></p>
<p th:utext="${session.user.upcaseName()}"></p>
<p th:utext="${user.habbit[0]}"></p>
|
可以看到变量表达式不但可以获取变量的属性值,甚至还可以访问变量的方法(getName()和upcaseName())。session代表HttpSession对象。
选择表达式*{ }
选择表达式的使用方法如下所示:
|
1
2
3
4
5
|
<div th:object="${session.user}">
<p>name: <span th:text="*{name}"></span></p>
<p>age: <span th:text="*{age}"></span></p>
<p>habbit: <span th:text="*{habbit[0]}"></span></p>
</div>
|
*{}代指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
2
3
4
5
|
@RequestMapping(value="main/{name}")
public String main(@PathVariable String name){
System.out.println("pathValue: "+name);
return "main";
}
|
字面量
文本常量
文本常量指的是单引号之间的字符串,比如:
|
1
|
<p th:text="'Welcome KangKang'"></p>
|
数字常量
|
1
2
|
<p>The year is <span th:text="2017">1492</span>.</p>
<p>In two years, it will be <span th:text="2017 + 2">1494</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
2
3
|
<tr th:class="${row.even}? 'even' : 'odd'">
...
</tr>
|
条件表达式也可以使用括号嵌套:
|
1
2
3
|
<tr th:class="${row.even}? (${row.first}? 'first' : 'even') : 'odd'">
...
</tr>
|
else表达式也可以省略,在这种情况下,如果条件为false,则返回空值:
|
1
2
3
|
<tr th:class="${row.even}? 'even'">
...
</tr>
|
默认表达式
默认表达式是一种特殊类型的条件值,不带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
Thymeleaf 标准表达式语法的更多相关文章
- (二)Thymeleaf标准表达式之——简单表达式
2. 标准表达式(Standard Expression Syntax) 标准表达式包含以下几个方面: 简单表达式: 变量表达式: ${...} 选择变量表达式: *{...} 消息表达式: #{.. ...
- (三)Thymeleaf标准表达式之——文字(literals)
2.2 文字(literals) 模板名称:text.html 2.2.1 文本(text literals)(放在 单引号 里面,可以是任意字符) <p> Now you are loo ...
- (五)Thymeleaf标准表达式之——[7->8]条件表达式& 默认表达式
2.7 条件表达式 模板名称:condition-express.html <1>a ? b:c (if then:else) <2>a?c (if else) 条件表达式( ...
- Thymeleaf标准表达式
Thymeleaf的官网为: http://www.thymeleaf.org/ 一.变量表达式${-} 使用${-}括起来的表达式,称为变量表达式.该表达式的内容会显示在HTML标签体文本处. 该表 ...
- (四)Thymeleaf标准表达式之——[3->6] 操作符(文本、算术、布尔、比较及相等)
2.3 文本操作符 模板名称:text.html 连接符: + 可以是任意字符和表达式等 文本替换符:| 不能表达出条件表达式(官网:只能是变量表达式) e.g. 1.<span th ...
- Thymeleaf的基本语法总结
最近用Spring boot开发一些测试平台和工具,用到页面展示的部分, 选择的是thymeleaf模版引擎. 页面开发的7788快结束了,下面来总结下此过程中对thymeleaf的使用总结. 什么是 ...
- C#3.0新增功能09 LINQ 标准查询运算符 02 查询表达式语法
连载目录 [已更新最新开发文章,点击查看详细] 某些使用更频繁的标准查询运算符具有专用的 C# 语言关键字语法,使用这些语法可以在查询表达式中调用这些运算符. 查询表达式是比基于方法的等效项更具 ...
- Thymeleaf常用语法:表达式语法之运算符
Thymeleaf表达式语法之常量分为字符串常量.数字常量.布尔值常量.空值常量:运算符分为算术运算符.关系运算符.条件运算符.无操作符. 开发环境:IntelliJ IDEA 2019.2.2Spr ...
- [转]access 标准表达式中数据类型不匹配
好久没有用access,今儿遇到一个特别让人无语的问题: access数据表的Date/Time类型的字段,假如字段名为dtime: 如果直接用dtime=‘2013/9/6 10:50:21’,sq ...
随机推荐
- HALCON之喷码OCR识别案例
一个喷码识别的案例 1 read_image (Image, 'D:/用户目录/Desktop/2.png') 2 3 rgb1_to_gray(Image, Image) 4 5 get_image ...
- 如何在IDEA启动多个Spring Boot工程实例
在我讲解的案例中,经常一个工程启动多个实例,分别占用不同的端口,有很多读者百思不得其解,在博客上留言,给我发邮件,加我微信询问.所以有必要在博客上记录下,方便读者. step 1 在IDEA上点击Ap ...
- Element-ui实现loading的局部刷新
后台管理系统loading的局部刷新 在一次vue+element-ui后台管理系统的项目中,遇到这样一个问题,引入element-ui加载框后,loading会占满整个屏幕,虽然通过改变路由实现了局 ...
- mysql中的隐式转换
在mysql查询中,当查询条件左右两侧类型不匹配的时候会发生隐式转换,可能导致查询无法使用索引.下面分析两种隐式转换的情况 看表结构 phone为 int类型,name为 varchar EXPLAI ...
- Tiny4412 u-boot分析(3)u-boot 引导内核流程
在u-boot中,通过bootm命令启动内核.bootm命令的作用是将内核加载到指定的内存地址,然后通过R0.R1.R2寄存器传递启动参数之后启动内核.在启动内核之前需要对环境做一些初始化工作,主要有 ...
- Linux内核编译技巧
1.将多个文件编译成一个模块,部分文件可选 Example1: drivers/usb/core/Makefile:usbcore-y := usb.o hub.o hcd.o urb.o messa ...
- oracle10g精简版安装步骤
Feng218 假设出现例如以下错误: 最好把360安全卫士全关了.再安装下.就没事了 然后安装完了进入时输入username:sys或者system password就是自己设好的passwo ...
- NUnit使用
NUnit是.net平台上使用得最为广泛的测试框架之一,本文将通过示例来描述NUnit的使用方法,并提供若干编写单元测试的建议和技巧,供单元测试的初学者参考. 继续下文之前,先来看看一个非常简单的测试 ...
- MySql登陆密码忘记了 怎么办?
MySql登陆密码忘记了 怎么办?root密码:连root密码忘记没用root进修改mysql数据库user表咯 root密码: 方法一:MySQL提供跳访问控制命令行参数通命令行命令启MySQL服务 ...
- postgresql双机热备、高可用方案(采用pacemaker+corosync实现)
http://blog.csdn.net/qguanri/article/details/51151974 需求描述 我们有两台centos7的数据库主机A.B.要对A.B实现双机热备,A作为数据库m ...