[JAVA] écran

Commonisation des en-têtes, pieds de page, etc.

Préparez un fichier HTML pour les parties communes telles que common.html.

demo\src\main\resources\templates\common.html


<html xmlns:th="http://www.thymeleaf.org">
    <header th:fragment="header()">
entête
    </header>
</html>

Spécifie de charger le HTML défini dans common.html en tant que HTML spécifique à l'écran.

demo\src\main\resources\templates\templateTest\index.html


<html xmlns:th="http://www.thymeleaf.org">
	<header th:replace="common :: header()"></header>
</body>

Commentaire

index.html

<header th:replace="common :: header()"></header>


A été défini dans common.html

fragment="header()">


Il a été remplacé par.

Autres connaissances minimales requises

text="${Nom de variable}"


 Ou
```[[${Nom de variable}]]```


 - Déclaration IF

#### **`if="${Expression conditionnelle}"`**
```th


 --Définition variable

#### **`with="Nom de variable= 'Valeur à définir'"`**
```th


- switch

<th:block th:switch="${Valeur à inspecter}"> <th:block th:case=Valeur 1> Valeur à inspecter=Que faire si la valeur est 1 </th:block> <th:block th:case=Valeur 2> Valeur à inspecter=Que faire si la valeur est 2 </th:block> </th:block>


 - Traitement itératif des listes

#### **`th:each="{Nom de variable répété} , ${Nom de la variable d'état lors du traitement itératif} : ${Nom de variable à répéter}"`**

Vous pouvez obtenir les informations suivantes sur "Nom de la variable d'état pendant le traitement répétitif".

Propriété La description
index Numéro d'index dans la boucle (valeur de 0)
count Compte en boucle (valeur de 1)
size Taille de la liste à boucler
current Éléments dans la boucle
even Que ce soit ou non une ligne paire (booléenne)
odd Que ce soit ou non une ligne impaire (booléenne)
first S'il s'agit de la première ligne (booléen)
last S'il s'agit de la dernière ligne (booléen)

Exemple d'implémentation utilisant chaque fonction

demo\src\main\resources\templates\templateTest\index.html


<html xmlns:th="http://www.thymeleaf.org">

<head th:replace="common :: head('Test de modèle',~{::link},~{::script})">
	<!--CSS spécifique à l'écran, JS-->
	<link rel="stylesheet" th:href="@{/css/index.css}" />
	<script type="text/javascript" th:src="@{/js/index.js}"></script>
	<script>
		console.log("JS spécifique à l'écran");
	</script>
</head>

<body>

	<header th:replace="common :: header()"></header>

	<section>
		<h1>Sortie de la valeur de controllerValue</h1>
		th:utilisation du texte:<span th:text="${controllerValue}"></span>
		<br>
		th:texte non utilisé:[[${controllerValue}]]
	</section>

	<br>

	<section>
		<h1>IF</h1>
		<th:block th:if="${conditionVal == 1}">
			true
		</th:block>
	</section>
	<br>

	<section>
		<h1>variable</h1>
		<th:block th:with="hensu = 'valeur de hensu'">
			hensu = [[${hensu}]]
		</th:block>
	</section>

	<br>

	<section>
		<th:block th:switch="${conditionVal}">
			<th:block th:case=1>
				conditionVal=Sortie si 1
			</th:block>
			<th:block th:case=2>
				conditionVal=Sortie en cas de 2
			</th:block>
		</th:block>
	</section>

	<br>

	<section>
		<h1>Liste itérative</h1>
		<table border="1">
			<thead>
				<tr>
					<th>ID</th>
					<th>name</th>
					<th>Informations sur la boucle</th>
				</tr>
			</thead>
			<tbody>
				<tr th:each="company , status : ${companyList}">
					<td th:text="${company.id}"></td>
					<td th:text="${company.name}"></td>
					<td>
						index:[[${status.index}]]<br>
						count:[[${status.count}]]<br>
						size:[[${status.size}]]<br>
						current:[[${status.current}]]<br>
						even:[[${status.even}]]<br>
						odd:[[${status.odd}]]<br>
						first:[[${status.first}]]<br>
						last:[[${status.last}]]<br>
					</td>
				</tr>
			</tbody>
		</table>
	</section>

	<footer th:replace="common :: footer()"></footer>

</body>
</html>

demo\src\main\resources\templates\common.html


<html xmlns:th="http://www.thymeleaf.org">
    <head th:fragment="head(title , links , scripts)">
        <meta charset="utf-8">

        <!--Définir un titre spécifique à l'écran-->
        <title th:text="${title}"></title>

        <!--CSS et JS communs à tous les écrans-->
        <link rel="stylesheet" th:href="@{/css/common.css}" />
        <script type="text/javascript" th:src="@{/js/common.js}"></script>

        <!--Pour remplacement avec CSS et JS spécifiques à l'écran-->
        <th:block th:replace="${links} ?: _" />
        <th:block th:replace="${scripts} ?: _" />
    </head>

    <header th:fragment="header()">
entête
    </header>
    
    <footer th:fragment="footer()">
bas de page
    </footer>
</html>

demo\src\main\java\com\example\demo\TemplateTestConttoller.java


package com.example.demo;

import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping("templateTest")
public class TemplateTestConttoller {

    @RequestMapping(value = "/index", method = RequestMethod.GET)
    public Model index(Model model) throws Exception {
        //Pour le traitement itératif
        List<Company> companyList = new ArrayList<>();
        companyList.add(new Company(1, "Société A"));
        companyList.add(new Company(2, "Société B"));
        model.addAttribute("companyList", companyList);

        model.addAttribute("controllerValue", "Chaîne transmise par le contrôleur");

        model.addAttribute("conditionVal", 1);

        return model;
    }

    public class Company{
        public Integer id;
        public String name;

        public Company(Integer id, String name) {
            this.id = id;
            this.name = name;
        }
    }
}

Recommended Posts

écran
Méthode de transition d'écran
Mémorandum de transition d'écran
Enregistrement d'écran sur Ubuntu 20.04
Disposition des parties de l'écran