Intégration de Thymeleaf avec Spring MVC

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

Étiquettes: Thymeleaf Spring MVC Java Configuration Intégration

Publié le 16 juin à 02h57