官术网_书友最值得收藏!

Creating the base template

We mentioned before that we will be using the Thymeleaf Layout Dialect to create a base template and use the base template to decorate all other templates. The base template will contain all the CSS links, JavaScript source file links, the header, and the footer, as shown in the following code:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
<head>

<title layout:title-pattern="$CONTENT_TITLE - $LAYOUT_TITLE">World In Numbers</title>
<meta name="description" content=""/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<!-- Include all the CSS links -->
</head>

<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-primary">
<a class="navbar-brand" href="#">WORLD IN NUMBERS</a>
<div class="collapse navbar-collapse" id="navbarColor01">
<ul class="navbar-nav mr-auto">
<li class="nav-item active">
<a class="nav-link" th:href="@{/countries}">Countries</a>
</li>
</ul>
</div>
</nav>
<div class="container">
<div class="content">
<div layout:fragment="page_content">
<!-- Placeholder for content -->
</div>

</div>
</div>

<div class="modal" id="worldModal" >
</div>
<footer id="footer"></footer>
<!-- /.container -->

<!-- Include all the Javascript source files -->
<th:block layout:fragment="scripts">
<!-- Placeholder for page related javascript -->
</th:block>
</body>

</html>

The two main important parts of the following template are as follows:

  • <div layout:fragment="page_content"></div>: The other templates that use the base template as decorator provide their HTML within this section. Thymeleaf Layout Dialect at runtime decorates this HTML with the content from the base template.
  • <th:block layout:fragment="scripts"></th:block>: Similar to the HTML previous content, any page-specific JavaScript or links to any specific JavaScript source files can be added within this section. This helps in isolating page-specific JavaScript in their own pages.

Any template that wants to use the base template as the decorator will declare this attribute, layout:decorate="~{base}", in the <html> tag. We will not go into the content of individual templates as it's mostly HTML. All the templates can be found at the location worldgdp/src/main/resources/templates. We have three templates:

  • countries.html: This is for showing the countries' list with filtering and pagination
  • country-form.html: This is for editing a country's detail
  • country.html: This is for showing a country's detail
主站蜘蛛池模板: 富民县| 保山市| 浙江省| 和硕县| 库伦旗| 正镶白旗| 松滋市| 砀山县| 长垣县| 湘阴县| 元阳县| 临潭县| 江达县| 黄梅县| 昌黎县| 个旧市| 萍乡市| 昌图县| 原平市| 万源市| 遂昌县| 旬邑县| 常州市| 新竹县| 湘潭县| 淳安县| 自治县| 固阳县| 固镇县| 上杭县| 冕宁县| 崇礼县| 榆树市| 芦溪县| 蒙阴县| 武功县| 鲜城| 巍山| 信丰县| 中方县| 新兴县|