千峰商城-springboot项目实战07-Thymeleaf基本语法

如果要在Thymeleaf模板中获取从控制传递的数据,需使用th标签。

 

1.在Thymeleaf模板页面引入th标签的命名空间。

test.html:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
test
<hr/>
<label th:text="${book.bookName}">图书名称</label>
</body>
</html>

 

 

2.在Thymeleaf模板页面取值。

th:text

在几乎所有的HTML双标签都可以使用 th:text 属性,将接收到的数据显示在标签的内容中。

text.html:

价格:<label th:text="${price}"></label> <br>
字符串:<div th:text="${str}"></div>
<p th:text="${book.bookName}"></p> <!--${book.bookName}:OGNL 对象图导航语言-->

 

th:inline   内联标签

HTML内联

<p th:inline="text">图书名称:[[${book.bookName}]]</p> 

CSS内联:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css" th:inline="css">
        .style1{
            color:[[${color}]] ;
        }
    </style>
</head>
<body>
test
<hr/>

价格:<label th:text="${price}"></label> <br>
字符串:<div th:text="${str}"></div>
<p th:text="${book.bookName}"></p>  <!--${book.bookName}:OGNL 对象图导航语言-->

<p th:inline="text" class="style1">图书名称:[[${book.bookName}]]</p>  <!--${book.bookName}:OGNL 对象图导航语言-->

</body>
</html>

 

 JavaScript内联:

<script type="css/javascript" th:inline="javascript">

</script>

 

th:object 和 *

 

<div th:object="${book}">
    <p th:text="*{bookId}"></p>
    <p th:text="*{bookName}"></p>
    <p th:text="*{bookAuthor}"></p>
</div>

 

 

 

3.流程控制

 

th:each  循环

<table style="width: 600px" border="1" cellspacing="0">
    <caption>图书信息列表</caption>
    <thead>
        <tr>
            <th>图书ID</th>
            <th>图书名称</th>
            <th>作者</th>
        </tr>
    </thead>
    <tbody>
        <tr th:each="b:${books}">
            <td th:text="${b.bookId}"></td>
            <td th:text="${b.bookName}"></td>
            <td th:text="${b.bookAuthor}"></td>
        </tr>
    </tbody>
</table>

 

 th:if  分支

<table style="width: 600px" border="1" cellspacing="0">
    <caption>图书信息列表</caption>
    <thead>
        <tr>
            <th>图书ID</th>
            <th>图书名称</th>
            <th>作者</th>
            <th>图书价格</th>
            <th>购买建议</th>
        </tr>
    </thead>
    <tbody>
        <tr th:each="b:${books}">
            <td th:text="${b.bookId}"></td>
            <td th:text="${b.bookName}"></td>
            <td th:text="${b.bookAuthor}"></td>
            <td th:text="${b.bookPrice}"></td>
            <td th:if="${b.bookPrice}>40" style="color: red">太贵!!!</td>
            <td th:if="${b.bookPrice}<=40" style="color: green">推荐购买</td>
        </tr>
    </tbody>
</table>

 

 

 

 th:swich 和 th:case  分支

<table style="width: 600px" border="1" cellspacing="0">
    <caption>图书信息列表</caption>
    <thead>
        <tr>
            <th>图书ID</th>
            <th>图书名称</th>
            <th>作者</th>
            <th>图书价格</th>
            <th>购买建议</th>
        </tr>
    </thead>
    <tbody>
        <tr th:each="b:${books}">
            <td th:text="${b.bookId}"></td>
            <td th:text="${b.bookName}"></td>
            <td th:text="${b.bookAuthor}"></td>
            <td th:text="${b.bookPrice}"></td>
<!--            <td th:if="${b.bookPrice}>40" style="color: red">太贵!!!</td>-->
<!--            <td th:if="${b.bookPrice}<=40" style="color: green">推荐购买</td>-->
            <td th:switch="${b.bookPrice}/10">
                <label th:case="1">建议购买</label>
                <label th:case="3">价格合理</label>
                <label th:case="*">价格不合理</label>
            </td>
        </tr>
    </tbody>
</table>

 

 

4.Thymeleaf碎片使用

碎片,就是HTML片段,我们可以将多个页面中使用的相同的HTML标签部分单独定义,然后通过 th:include 在HTML网页中引入对应的碎片。

 

新建一个 header.html 。


<!DOCTYPE html>
<html lang="en" xmlns:th="https://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>

<div th:fragment="fragment1" style="width: 100%; height: 80px;background: lightgreen; color: white; font-size: 16px;">
java 22:08
</div>

</body>
</html>
 

 

新建一个 fooder.html 。


<!DOCTYPE html>
<html lang="en" xmlns:th="https://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>

<div th:fragment="fragment2" style="width: 100%; height: 30px;background: deepskyblue; color: white; font-size: 25px;font-family: 黑体">
java 2022.4.26!
</div>

</body>
</html>
 

 

新建一个 a.html 。

 

<!DOCTYPE html>
<html lang="en" xmlns:th="https://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<div th:include="header::fragment1"></div>

<div style="width: 100%; height: 500px">
    定义内容
</div>

<div th:include="footer::fragment2"></div>

</body>
</html>

 

 在 PageController.java 中:

    @RequestMapping("/a.html")
    public String a(){
        return "a";
    }

 

输入网址: http://localhost:8081/a.html 进行运行。结果:

 

 发现成功拥有header样式和fooder样式。但是没有格式。

 

将将a.html的header样式改为:

<!--<div th:include="header::fragment1"></div>-->
<div th:replace="header::fragment1"></div>

 

 成功出现样式!

 

 

 
 
posted @ 2022-04-26 17:51  临易  阅读(54)  评论(0编辑  收藏  举报