TestController
增加一個布爾值數據,並且放在model中便於視圖上獲取
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
package
com.how2java.springboot.web;
import
java.util.ArrayList;
import
java.util.Date;
import
java.util.List;
import
org.springframework.stereotype.Controller;
import
org.springframework.ui.Model;
import
org.springframework.web.bind.annotation.RequestMapping;
import
com.how2java.springboot.pojo.Product;
@Controller
public
class
TestController {
@RequestMapping
(
"/test"
)
public
String test(Model m) {
String htmlContent =
"<p style='color:red'> 紅色文字</p>"
;
Product currentProduct =
new
Product(
5
,
"product e"
,
200
);
boolean
testBoolean =
true
;
m.addAttribute(
"htmlContent"
, htmlContent);
m.addAttribute(
"currentProduct"
, currentProduct);
m.addAttribute(
"testBoolean"
, testBoolean);
return
"test"
;
}
}
|
步驟 5 :
test.html
Thymeleaf 的條件判斷是 通過 th:if 來做的,只有為真的時候,才會顯示當前元素
取反可以用not, 或者用th:unless.
除此之外,三元表達式也比較常見
<p th:if="${testBoolean}" >如果testBoolean 是 true ,本句話就會顯示</p>
取反可以用not, 或者用th:unless.
<p th:if="${not testBoolean}" >取反 ,所以如果testBoolean 是 true ,本句話就不會顯示</p>
<p th:unless="${testBoolean}" >unless 等同於上一句,所以如果testBoolean 是 true ,本句話就不會顯示</p>
除此之外,三元表達式也比較常見
<p th:text="${testBoolean}?'當testBoolean為真的時候,顯示本句話,這是用三相表達式做的':''" ></p>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
<!DOCTYPE HTML>
<
html
xmlns:th
=
"http://www.thymeleaf.org"
>
<
head
>
<
title
>hello</
title
>
<
meta
http-equiv
=
"Content-Type"
content
=
"text/html; charset=UTF-8"
/>
<
link
rel
=
"stylesheet"
type
=
"text/css"
media
=
"all"
href
=
"../../webapp/static/css/style.css"
th:href
=
"@{/static/css/style.css}"
/>
<
script
type
=
"text/javascript"
src
=
"../../webapp/static/js/thymeleaf.js"
th:src
=
"@{/static/js/thymeleaf.js}"
></
script
>
<
style
>
h2{
text-decoration: underline;
font-size:0.9em;
color:gray;
}
</
style
>
</
head
>
<
body
>
<
div
class
=
"showing"
>
<
h2
>條件判斷</
h2
>
<
p
th:if
=
"${testBoolean}"
>如果testBoolean 是 true ,本句話就會顯示</
p
>
<
p
th:if
=
"${not testBoolean}"
>取反 ,所以如果testBoolean 是 true ,本句話就不會顯示</
p
>
<
p
th:unless
=
"${testBoolean}"
>unless 等同於上一句,所以如果testBoolean 是 true ,本句話就不會顯示</
p
>
<
p
th:text
=
"${testBoolean}?'當testBoolean為真的時候,顯示本句話,這是用三相表達式做的':''"
></
p
>
</
div
>
<
div
class
=
"showing"
>
<
h2
>顯示 轉義和非轉義的 html 文本</
h2
>
<
p
th:text
=
"${htmlContent}"
></
p
>
<
p
th:utext
=
"${htmlContent}"
></
p
>
</
div
>
<
div
class
=
"showing"
>
<
h2
>顯示對象以及對象屬性</
h2
>
<
p
th:text
=
"${currentProduct}"
></
p
>
<
p
th:text
=
"${currentProduct.name}"
></
p
>
<
p
th:text
=
"${currentProduct.getName()}"
></
p
>
</
div
>
<
div
class
=
"showing"
th:object
=
"${currentProduct}"
>
<
h2
>*{}方式顯示屬性</
h2
>
<
p
th:text
=
"*{name}"
></
p
>
</
div
>
<
div
class
=
"showing"
>
<
h2
>算數運算</
h2
>
<
p
th:text
=
"${currentProduct.price+999}"
></
p
>
</
div
>
<
div
class
=
"showing"
>
<
div
th:replace
=
"include::footer1"
></
div
>
<
div
th:replace
=
"include::footer2(2015,2018)"
></
div
>
</
div
>
</
body
>
</
html
>
|
步驟 6 :
關於真假判斷
不只是布爾值的 true 和 false, th:if 表達式返回其他值時也會被認為是 true 或 false,規則如下:
boolean 類型並且值是 true, 返回 true
數值類型並且值不是 0, 返回 true
字符類型(Char)並且值不是 0, 返回 true
String 類型並且值不是 "false", "off", "no", 返回 true
不是 boolean, 數值, 字符, String 的其他類型, 返回 true
值是 null, 返回 false
boolean 類型並且值是 true, 返回 true
數值類型並且值不是 0, 返回 true
字符類型(Char)並且值不是 0, 返回 true
String 類型並且值不是 "false", "off", "no", 返回 true
不是 boolean, 數值, 字符, String 的其他類型, 返回 true
值是 null, 返回 false
步驟 7 :
重啟測試
重新啟動Application.java, 然后訪問如下地址測試:
http://127.0.0.1:8080/thymeleaf/test
即可看到如圖所示的效果。