变量表达式${ }

在控制器中往页面传递几个变量:

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 标准表达式语法的更多相关文章

  1. (二)Thymeleaf标准表达式之——简单表达式

    2. 标准表达式(Standard Expression Syntax) 标准表达式包含以下几个方面: 简单表达式: 变量表达式: ${...} 选择变量表达式: *{...} 消息表达式: #{.. ...

  2. (三)Thymeleaf标准表达式之——文字(literals)

    2.2 文字(literals) 模板名称:text.html 2.2.1 文本(text literals)(放在 单引号 里面,可以是任意字符) <p> Now you are loo ...

  3. (五)Thymeleaf标准表达式之——[7->8]条件表达式& 默认表达式

    2.7 条件表达式 模板名称:condition-express.html <1>a ? b:c  (if then:else) <2>a?c (if else) 条件表达式( ...

  4. Thymeleaf标准表达式

    Thymeleaf的官网为: http://www.thymeleaf.org/ 一.变量表达式${-} 使用${-}括起来的表达式,称为变量表达式.该表达式的内容会显示在HTML标签体文本处. 该表 ...

  5. (四)Thymeleaf标准表达式之——[3->6] 操作符(文本、算术、布尔、比较及相等)

    2.3 文本操作符 模板名称:text.html 连接符: +   可以是任意字符和表达式等 文本替换符:|    不能表达出条件表达式(官网:只能是变量表达式) e.g. 1.<span th ...

  6. Thymeleaf的基本语法总结

    最近用Spring boot开发一些测试平台和工具,用到页面展示的部分, 选择的是thymeleaf模版引擎. 页面开发的7788快结束了,下面来总结下此过程中对thymeleaf的使用总结. 什么是 ...

  7. C#3.0新增功能09 LINQ 标准查询运算符 02 查询表达式语法

    连载目录    [已更新最新开发文章,点击查看详细] 某些使用更频繁的标准查询运算符具有专用的 C# 语言关键字语法,使用这些语法可以在查询表达式中调用这些运算符. 查询表达式是比基于方法的等效项更具 ...

  8. Thymeleaf常用语法:表达式语法之运算符

    Thymeleaf表达式语法之常量分为字符串常量.数字常量.布尔值常量.空值常量:运算符分为算术运算符.关系运算符.条件运算符.无操作符. 开发环境:IntelliJ IDEA 2019.2.2Spr ...

  9. [转]access 标准表达式中数据类型不匹配

    好久没有用access,今儿遇到一个特别让人无语的问题: access数据表的Date/Time类型的字段,假如字段名为dtime: 如果直接用dtime=‘2013/9/6 10:50:21’,sq ...

随机推荐

  1. echarts入门1【柱状图/饼图】

    这几天刚好用到了echarts,不过项目使用的前端框架非常老了,由此可见echarts兼容性还是hin好的,以后的项目中可能也会遇到很多,准备由浅至深的学习一下echarts,今天先从最基础的开始记录 ...

  2. java并发编程:线程安全管理类--原子操作类--AtomicIntegerFieldUpdater<T>

    1.类 AtomicIntegerFieldUpdater<T> public abstract class AtomicIntegerFieldUpdater<T> exte ...

  3. android 知识小结-1

    Java哪些数据结构是线程安全的,CurrentHashMap的原理 ConcurrentHashMap.ConcurrentSkipListMap.ConcurrentSkipListSet.Con ...

  4. 高级浏览器-SRWare Iron 29.0.1600.0 版本发布

    SRWare Iron是德国一安全公司srware改造的Chrome(铬)命名为铁(iron)的浏览器.于2008年9月18日首次发布. 据官方介绍,Iron浏览器砍掉了Chromium原程序中的很多 ...

  5. 【.NET】AutoMapper学习记录

    在两个不同的类型对象之间传输数据,通常我们会用DTOs(数据传输对象),AutoMapper就是将一个对象自动转换为另一个对象的技术 背景 一些orm框架,在用到Entity的时候有一些开源代码用到了 ...

  6. deno学习二 基本代码

    deno 介绍是安全的ts 运行时 简单的代码 使用js(app.js) console.log("demoapp") 输出 dalongdemo 使用ts(app.ts) con ...

  7. TVS 选型

    TVS 选型 主要用于 IO 保护 TVS 的电压不要小于正常工作的电压,不然会影响正常工作. ESD 的电压很高,但是时间很短. TVS 有节电容,用于高速线路时要注意. 有双向的,也有单向的,还有 ...

  8. Django 思维导图

  9. tomcat自启动脚本

    1.#cd /etc/rc.d/init.d2.#vi tomcat3.把下面的代码保存为tomcat文件,并让它成为可执行文件 chmod 755 tomcat. #!/bin/sh # # /et ...

  10. BZOJ1252:序列终结者

    浅谈\(splay\):https://www.cnblogs.com/AKMer/p/9979592.html 浅谈\(fhq\)_\(treap\):https://www.cnblogs.com ...