Notions abordées :
Créer le projet td0 :
Configurer le projet dans application.properties, pour que le contextPath soit td0/, configurer Mustache
On utilisera Semantic-UI pour la partie présentation.
Créer un template header.html :
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Gestion d'items</title> <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.4.1/semantic.min.css"> </head> <body> <div class="ui container">
Créer un template footer.html :
</div><!-- Fermeture de la div ui-container --> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.4.1/semantic.min.js"></script> </body> </html>
Créer une classe Element dans s4.spring.models :
Ajouter :
L'annotation @SessionAttributes permet de définir des variables de session. Combinée à @ModelAttribute, elle permet l'initialisation correcte de la variable de session.
@SessionAttributes("items") public class MainController { @ModelAttribute("items") public List<String> getItems(){ return new ArrayList<>(); } }
Adresse | Description |
---|---|
items/ | Affiche la liste des éléments stockée en Session + 1 bouton pour ajouter un élément (/items/new) |
items/new | Afficher un formulaire d'ajout d'élément (seulement son nom), la validation va vers /items/addNew puis redirige vers /items |
items/inc/{nom} | Incrémente l'évaluation de l'élément de 1, puis redirige vers /items |
items/dec/{nom} | Décrémente l'évaluation de l'élément de 1, puis redirige vers /items |
Effectue l'ajout, puis redirige la réponse vers la route /items
@PostMapping("items/addNew") public RedirectView addNew(@RequestParam String nom) { ... return new RedirectView("/items/"); }