[JAVA] Comment normaliser le pied de page d'en-tête dans Thymeleaf

Aperçu

Comment standardiser l'en-tête et le pied de page communs à chaque page html dans une application Web créée à l'aide de Spring Boot et Thymeleaf

environnement

échantillon

Structure du répertoire

Je vais omettre le côté Java, mais la disposition du modèle et du contenu statique ressemble à ceci.

dir


src/main/resources
├── static
│   ├── css
│   │   ├── common.css
│   │   └── top.css
│   └── js
│       └── datepicker.js
└── templates
    ├── common.html
    └── index.html

Lorsque Spring Boot fait référence à des fichiers CSS ou JS de HTML sous templates, Puisque static est le répertoire racine, il est configuré comme ceci.

Créer common.html pour les parties communes

common.html


<html xmlns:th="http://www.thymeleaf.org">
<!-- (1)Fragmentez la tête que vous souhaitez partager-->
<head th:fragment="meta_header(title,links,scripts)">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <!-- (2)CSS à lire en commun/JS -->
    <link rel="stylesheet" href="/css/common.css" />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
    <!-- (3)Format du titre-->
    <title th:text="${title}+' | sample app'">Chaque titre de page| sample app</title>

    <!-- (4)Ce qui est lu uniquement pour chaque vue-->
    <th:block th:replace="${links} ?: _" />
    <th:block th:replace="${scripts} ?: _" />
</head>
<body>
    <!-- (5)Fragmentez les parties que vous souhaitez standardiser dans le corps-->
    <header th:fragment="header">
        <h1><a th:href="@{'/'}">sample app</a></h1>
    </header>
</body>
</html>

Commentaire

(1) Comme le nom du fragment peut prendre un argument, définissez title, links, scripts comme argument. (2) Décrivez le CSS / JS qui est lu en commun sur chaque page. (3) Définissez le format du titre de la page sur th: text =" " en utilisant l'argument title (4) Insérez le CSS / JS lu sur chaque page en utilisant th: replace En utilisant le jeton non traité (?: _), si$ {links}est nul, alors th: block lui-même est absent. (5) S'il y a quelque chose que vous voulez rendre commun dans le corps, utilisez th: fragment pour en faire une partie.

Appel de chaque côté html

index.html


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<!-- (1)Remplacer par un en-tête commun-->
<head th:replace="common :: meta_header('top',~{::link},~{::script})">
    <!-- (2)CSS à charger unique sur cette page/JS -->
    <link rel="stylesheet" th:href="@{/css/top.css}" />
    <script type="text/javascript" th:src="@{/js/datepicker.js}"></script>
</head>
<body>
    <!-- (3)Appeler les parties communes-->
    <div th:replace="common :: header"></div>
    <h2>top page</h2>
</body>

Commentaire

(1) Remplacez header par celui défini dans common.html en passant un argument. (2) Définissez un fichier à lire uniquement sur cette page (ʻindex.htmldans cet exemple) (3) Remplacez les parties communes parth: replace =" nom de la page :: nom du fragment "`

référence

Comment rendre les en-têtes et les pieds de page communs dans Spring Boot Tutorial: Using Thymeleaf

Recommended Posts

Comment normaliser le pied de page d'en-tête dans Thymeleaf
Comment intégrer des variables JavaScript dans HTML avec Thymeleaf
Reportez-vous à enum dans Thymeleaf
[Rails] Comment définir des macros dans Rspec et standardiser le traitement
Comment utiliser Lombok au printemps
Comment trouver May'n dans XPath
Comment masquer la barre de défilement dans WebView
Comment itérer indéfiniment en Ruby
Comment exécuter Ant dans Gradle
Comment maîtriser la programmation en 3 mois
Comment apprendre JAVA en 7 jours
Comment obtenir des paramètres dans Spark
Comment installer Bootstrap dans Ruby
Comment utiliser InjectorHolder dans OpenAM
Comment installer jQuery dans Rails 6
Comment utiliser les classes en Java?
Comment nommer des variables en Java
Comment définir Lombok dans Eclipse
Comment concaténer des chaînes avec Java
Comment installer Swiper in Rails
[swift5] Comment spécifier la couleur en hexadécimal
Comment implémenter le calcul de la date en Java
Comment implémenter le filtre de Kalman par Java
Prise en charge multilingue de Java Comment utiliser les paramètres régionaux
Comment changer le nom de l'application dans les rails
Comment utiliser le volume nommé dans docker-compose.yml
Comment filtrer JUnit Test dans Gradle
Comment insérer une vidéo dans Rails
Comment inclure Spring Tool dans Eclipse 4.6.3?
Comment ajouter un fichier jar dans ScalaIDE
Comment faire une conversion de base en Java
Comment avoir des paramètres dans la méthode link_to
Comment utiliser Docker dans VSCode DevContainer
Comment utiliser MySQL dans le didacticiel Rails
Comment fixer la date système dans JUnit
Comment appliquer les conventions de codage en Java
Comment intégrer Janus Graph dans Java
[rails] Comment configurer le routage dans les ressources
Comment obtenir la date avec Java
Comment implémenter la fonctionnalité de classement dans Rails
Comment utiliser les variables d'environnement dans RubyOnRails
Comment implémenter le traitement asynchrone dans Outsystems
Comment publier une bibliothèque dans jCenter
Comment spécifier l'attribut id dans JSF
Comprendre en 5 minutes !! Comment utiliser Docker
Comment écraser les données Firebase avec Swift
Comment utiliser credentials.yml.enc introduit à partir de Rails 5.2
Comment assembler JSON directement dans Jackson
[Pour les débutants] Comment déboguer avec Eclipse
Comment utiliser ExpandableListView dans Android Studio
Comment afficher les messages d'erreur en japonais
Résumé de la sélection des éléments dans Selenium
Comment obtenir les informations d'identification Keycloak dans la classe d'intercepteur
[Java FX] Comment écrire des autorisations Eclipse dans build.gradle
Comment vérifier le journal dans le conteneur Docker