-Suite de Dernière fois --Créez une application CRUD simple avec Spring Boot ――Cette fois, nous allons refactoriser pour faire ressortir les parties communes de Thymeleaf.
src/main/resources/templates
└── players
    ├── edit.html
    ├── index.html
    ├── new.html
    └── show.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
  <head>
    <meta charset="utf-8" />
    <title>XXXX - baseball</title>
    <link rel="stylesheet" href="/css/bootstrap.css" />
    <script src="/js/jquery.js"></script>
    <script src="/js/bootstrap.js"></script>
  </head>
  <body>
    <!--Cela dépend de la page-->
  </body>
</html>
pom.xml pour maven et build.gradle pour gradlepom.xml
<dependency>
  <groupId>nz.net.ultraq.thymeleaf</groupId>
  <artifactId>thymeleaf-layout-dialect</artifactId>
</dependency>
build.gradle
compile('nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect')
--Créez un fichier appelé layout.html dans src / main / resources / templates et décrivez le contenu suivant
<!DOCTYPE html>
<!-- ① -->
<html xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
  <head>
    <meta charset="utf-8" />
    <!-- ② -->
    <title layout:title-pattern="$DECORATOR_TITLE - $CONTENT_TITLE">baseball</title>
    <link rel="stylesheet" href="/css/bootstrap.css" />
    <script src="/js/jquery.js"></script>
    <script src="/js/bootstrap.js"></script>
  </head>
  <body>
    <!-- ③ -->
    <div layout:fragment="content"></div>
  </body>
</html>
-①: La différence avec les fichiers précédents est que la description suivante a été ajoutée.
- xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
$ DECORATOR_TITLE.$ CONTENT_TITLE.Titre de chaque page --baseball
--③: En ajoutant la marque <div layout: fragment =" content "> </ div>, vous pouvez remplacer le contenu de chaque page par cette partie.src / main / resources / templates / players / index.html<!DOCTYPE html>
<!-- ① -->
<html xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorator="layout">
  <head>
    <!-- ② -->
    <title>Listing Players</title>
  </head>
  <body>
    <!-- ③ -->
    <div class="container" layout:fragment="content">
      <h1>Listing Players</h1>
      <!--Omis parce que c'est long-->
    </div>
  </body>
</html>
--①: Les deux descriptions suivantes ont été ajoutées.
- A: xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
- B: layout:decorator="layout"
--A est identique au fichier commun, et en écrivant ceci, vous pouvez utiliser le fichier commun.
--B spécifie le fichier commun à utiliser
-Le côté droit de = correspond au nom du fichier à l'exclusion de l'extension du fichier commun
--Par exemple, si le fichier commun est dans template / sample / common.html, la description de B est la suivante.
- layout:decorator="sample/common"
layout:decorate="~{sample/common}"
-②: Le contenu de la balise head n'est que titreListing Players - baseballlayout: fragment =" content ", le html sous cette description peut être remplacé par la partie décrite comme layout: fragment =" content " dans le fichier commun.src/main/resources/templates/players/new.html<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorator="layout">
  <head>
    <title>New Player</title>
  </head>
  <body>
    <div class="container" layout:fragment="content">
      <!--Omis parce que c'est long-->
    </div>
  </body>
</html>
src/main/resources/templates/players/edit.html<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorator="layout">
  <head>
    <title>Editing Player</title>
  </head>
  <body>
    <div class="container" layout:fragment="content">
      <!--Omis parce que c'est long-->
    </div>
  </body>
</html>
src/main/resources/templates/players/show.html<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorator="layout">
  <head>
    <title>Show Player</title>
  </head>
  <body>
    <div class="container" layout:fragment="content">
      <!--Omis parce que c'est long-->
    </div>
  </body>
</html>
--OK si vous faites la même opération qu'avant
Recommended Posts