Ce guide présente les étapes d'intégration du moteur de templates Thymeleaf dans une application Spring MVC.
Configuration initiale
Créez un projeet Spring MVC avec les outils suivants :
- Système d'exploitation : Windows/Linux/macOS
- IDE : IntelliJ IDEA
- Gestion de dépendances : Gradle
Dépendances Gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
}
Configuration du web.xml
<web-app version="3.0">
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/servlet-config.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
Configuraton Thymeleaf
<beans>
<context:component-scan base-package="com.example.controller"/>
<mvc:annotation-driven/>
<bean id="templateResolver"
class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
<property name="prefix" value="/WEB-INF/vues/"/>
<property name="suffix" value=".html"/>
<property name="templateMode" value="HTML"/>
</bean>
<bean id="templateEngine"
class="org.thymeleaf.spring5.SpringTemplateEngine">
<property name="templateResolver" ref="templateResolver"/>
</bean>
<bean class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
<property name="templateEngine" ref="templateEngine"/>
</bean>
</beans>
Contrôleur Spring
package com.example.controller;
@Controller
public class PrincipalControleur {
@RequestMapping("/accueil")
public String pageAccueil(Model model) {
model.addAttribute("utilisateur", new Utilisateur());
return "formulaire";
}
@RequestMapping(value = "/traitement", method = RequestMethod.POST)
public String traitementFormulaire(Utilisateur utilisateur, Model model) {
model.addAttribute("utilisateur", utilisateur);
model.addAttribute("bienvenue", "Bienvenue !");
return "resultat";
}
}
Vues Thymeleaf
formualire.html :
<html xmlns:th="http://www.thymeleaf.org">
<form th:action="@{/traitement}" th:object="${utilisateur}" method="post">
<input type="text" th:field="*{prenom}"/>
<input type="text" th:field="*{commentaire}"/>
<input type="submit"/>
</form>
resultat.html :
<html xmlns:th="http://www.thymeleaf.org">
<div>
<span th:text="${utilisateur.prenom}"/>
<span th:text="${bienvenue}"/>
</div>
Déploiement
Après déploiement, accédez à l'application via :
http://localhost:8080/accueil