1. 程式人生 > >Thymeleaf 標準表達式語法

Thymeleaf 標準表達式語法

寫法 使用方法 thymeleaf 返回 standard val 單引號 word lean

變量表達式${ }

在控制器中往頁面傳遞幾個變量:

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 標準表達式語法