Springboot+Layui+Thymeleaf

在學習SpringBoot Web應用開發之前,我們都是通過@RestController 來處理請求,所返回的內容爲json對象。如果返回html頁面,則用@Controller直接請求,匹配請求爲 @RequestMapping("/")

@Controller

public class HelloController {
 

    @ResponseBody

    @RequestMapping("/hello")

    public String hello() {

        return "Hello World";

    }

     
    @RequestMapping("/")

    public String index(ModelMap map) {

        map.addAttribute("host", "我是yaohuiqin");

        return "index";

    }

}

模板引擎:

  在動態HTML實現上Spring Boot依然可以完美勝任,並且提供了多種模板引擎的默認配置支持,所以在推薦的模板引擎下,完美可以很快的上手開發動態網站。

  SpringBoot建議使用模板引擎,避免使用JSP,若一定使用JSP將無法實現SpringBoot的多種性能。

  常見的模板引擎:

  • Thymeleaf
  • FreeMarker
  • Velocity
  • Groovy
  • Mustache

  默認的模板配置路徑爲:src/main/resource/templates.

Thymeleaf:

  Thymeleaf 是一個XML/XHTML/HTML5模板引擎,可以用於Web與非Web環境中的應用開發。它提供了一個用於整合Spring Mvc 的可選模塊,在應用開發中,你可以使用Theamleaf來完全代替JSP或其他模板引擎。如Velocity。  Thymeleaf的目標是提供一種可被瀏覽器正確顯示的,格式良好的模板創建方式,因爲也可以稱作靜態建模。

例如:

<table>

  <thead>

    <tr>

      <th th:text="#{msgs.headers.name}">Name</td>

      <th th:text="#{msgs.headers.price}">Price</td>

    </tr>

  </thead>

  <tbody>

    <tr th:each="prod : ${allProducts}">

      <td th:text="${prod.name}">Oranges</td>

      <td th:text="${#numbers.formatDecimal(prod.price,1,2)}">0.99</td>

    </tr>

  </tbody>

</table>

在Spring Boot中使用Thymeleaf,只需要引入下面依賴,並在默認的模板路徑src/main/resources/templates下編寫模板文件即可完成。

<dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-thymeleaf</artifactId>

</dependency>

相關的屬性配置:

# Enable template caching.

spring.thymeleaf.cache=true

# Check that the templates location exists.

spring.thymeleaf.check-template-location=true

# Content-Type value.

spring.thymeleaf.content-type=text/html

# Enable MVC Thymeleaf view resolution.

spring.thymeleaf.enabled=true

# Template encoding.

spring.thymeleaf.encoding=UTF-8

# Comma-separated list of view names that should be excluded from resolution.

spring.thymeleaf.excluded-view-names=

# Template mode to be applied to templates. See also StandardTemplateModeHandlers.

spring.thymeleaf.mode=HTML5

# Prefix that gets prepended to view names when building a URL.

spring.thymeleaf.prefix=classpath:/templates/

# Suffix that gets appended to view names when building a URL.

spring.thymeleaf.suffix=.html  spring.thymeleaf.template-resolver-order= # Order of the template resolver in the chain. spring.thymeleaf.view-names= # Comma-separated list of view names that can be resolved.
<span style="font-size: 14px;"><strong><span style="color: #000000;">常用th標籤都有那些?</span></strong></span>
關鍵字      功能介紹        案例

th:id      替換id          <input th:id="'xxx' + ${collect.id}"/>

th:text     文本替換        <p th:text="${collect.description}">description</p>

th:utext    支持html的文本替換   <p th:utext="${htmlcontent}">conten</p>

th:object    替換對象        <div th:object="${session.user}">

th:value    屬性賦值        <input th:value="${user.name}" />

th:with    變量賦值運算        <div th:with="isEven=${prodStat.count}%2==0"></div>

th:style    設置樣式            th:style="'display:' + @{(${sitrue} ? 'none' : 'inline-block')} + ''"

th:onclick    點擊事件          th:οnclick="'getCollect()'"

th:each    屬性賦值            tr th:each="user,userStat:${users}">

th:if    判斷條件            <a th:if="${userId == collect.userId}" >

th:unless    和th:if判斷相反        <a th:href="@{/login}" th:unless=${session.user != null}>Login</a>

th:href    鏈接地址              <a th:href="@{/login}" th:unless=${session.user != null}>Login</a> />

th:switch    多路選擇 配合th:case 使用    <div th:switch="${user.role}">

th:case    th:switch的一個分支        <p th:case="'admin'">User is an administrator</p>

th:fragment    佈局標籤,定義一個代碼片段,方便其它地方引用    <div th:fragment="alert">

th:include    佈局標籤,替換內容到引入的文件    <head th:include="layout :: htmlhead" th:with="title='xx'"></head> />

th:replace    佈局標籤,替換整個標籤到引入的文件    <div th:replace="fragments/header :: title"></div>

th:selected    selected選擇框 選中    th:selected="(${xxx.id} == ${configObj.dd})"

th:src    圖片類地址引入          <img class="img-responsive" alt="App Logo" th:src="@{/img/logo.png}" />

th:inline    定義js腳本可以使用變量    <script type="text/javascript" th:inline="javascript">

th:action    表單提交的地址        <form action="subscribe.html" th:action="@{/subscribe}">

th:remove    刪除某個屬性        <tr th:remove="all">

                    1.all:刪除包含標籤和所有的孩子。

                    2.body:不包含標記刪除,但刪除其所有的孩子。

                    3.tag:包含標記的刪除,但不刪除它的孩子。

                    4.all-but-first:刪除所有包含標籤的孩子,除了第一個。

                    5.none:什麼也不做。這個值是有用的動態評估。

th:attr    設置標籤屬性,多個屬性可以用逗號分隔    比如 th:attr="src=@{/image/aa.jpg},title=#{logo}",此標籤不太優雅,一般用的比較少。

 

發佈了268 篇原創文章 · 獲贊 153 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章