变量表达式${ }

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

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. PHP:第六章——正则表达式的基本概念

    <?php header("Content-Type:text/html;charset=utf-8"); //正则表达式的基本概念: //宽松匹配和严格匹配: //常见的匹 ...

  2. Jquery表单清空

    虽然reset方法可以做到一部分,但是如果你有个元素是这样的 <input name="percent" value="50"/> 那么点击rese ...

  3. asp.net验证码图片生成示例

    验证码,一个很常见的东西.不管你是使用者还是开发者,这个东西80%的人都见到过,但是之前有人给我说过这么一句话“内行看门道,外行看热闹!”,仔细琢磨一下还真的是那么一回事.对于怎么实现验证码,闲话不多 ...

  4. JS在项目中用到的AOP, 以及函数节流, 防抖, 事件总线

    1. 项目中在绑定事件的时候总想在触发前,或者触发后做一些统一的判断或逻辑,在c#后端代码里,可以用Attribute, filter等标签特性实现AOP的效果,可是js中没有这种用法,归根到本质还是 ...

  5. MyEclipse web jsp 如何调试

    MyEclipse如何调试 | 浏览:882 | 更新:2014-03-13 17:38 1 2 3 4 5 分步阅读 当程序写好之后,如何调试呢? 我们在MyEclipse中jav添加断点,运行de ...

  6. I.MX6 eMMC 中启动U-boot存放的首地址

    /************************************************************************************ * I.MX6 eMMC 中 ...

  7. animationx详解

    animation是CSS3中极其强大的功能,它可以完成许多炫酷有趣的动画效果,网上也有非常不错的类库.下面将做详细介绍. 1.@keyframes:用于定义动画的具体动作(帧动作),一般要加上浏览器 ...

  8. 重新学习之spring第四个程序,整合struts2+hibernate+spring

    第一步:导入三大框架的jar包(struts2.3.16.1+hibernate3.2+spring3.2.4) 第二步:编写web.xml 和struts.xml和applicationContex ...

  9. hasura graphql pg 自定义函数的使用

      hasura graphql 的安装可以参考相关项目 创建函数 数据表创建 CREATE TABLE sql_function_table ( id SERIAL PRIMARY KEY, inp ...

  10. gqlgen golang graphql server 基本试用

    gqlgen golang 的graphql server 具体代码参考https://github.com/rongfengliang/gqlgen-demo 特点 模型优先 类型安全 代码生成 安 ...