framework-web:spring:controllers

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
framework-web:spring:controllers [2019/01/22 03:03] – [Request] jcheronframework-web:spring:controllers [2023/09/26 23:51] (Version actuelle) – [Redirections] jcheron
Ligne 21: Ligne 21:
  
 <sxh java> <sxh java>
-@RestController+@Controller
 @RequestMapping("/persons") @RequestMapping("/persons")
 class PersonController { class PersonController {
Ligne 39: Ligne 39:
 **Url définies :** **Url définies :**
  
-GET: /persons/1 => Affiche la personne d'id 1 +  * GET: /persons/1 => Affiche la personne d'id 1 
-POST: /persons => Ajoute la personne passée en paramètre+  POST: /persons => Ajoute la personne passée en paramètre
  
-voir [[https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-ann-requestmapping|Request mapping]] +  * voir [[https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-ann-requestmapping|Request mapping]] 
-voir [[https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-ann-arguments|Methods arguments]]+ 
 +**Injection de dépendance :** 
 + 
 +Certains objets, en fonction de leur type, ou grâce aux annotations, peuvent-être directement passés à une méthode de contrôleur. 
 + 
 +**Exemple :** récupération de la requête **HttpServletRequest**  
 +<sxh java> 
 +    @GetMapping("/{id}"
 +    public Person getPerson(@PathVariable Long id, HttpServletRequest request) { 
 +        // ... 
 +    } 
 +</sxh> 
 + 
 +  * voir [[https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-ann-arguments|Methods arguments]]
  
 ===== Response ===== ===== Response =====
 +
 +==== Affichage direct ====
 +
 +Sans passage par une vue, la chaîne retournée constitue le response body.
 +
 +<sxh java>
 + @RequestMapping
 + public @ResponseBody String index() {
 + return "Hello World!";
 + }
 +</sxh>
 +
 +==== Appel d'une vue ====
 +
 +Par défaut, le String retourné correspond à un nom de vue (dans ce cas main/index.html à partir du dossier des templates défini dans application.properties):
 +
 +<sxh java>
 + @RequestMapping
 + public String index() {
 + return "main/index";
 + }
 +</sxh>
 +
 +=== Passage de variables à la vue ===
 +
 +Il est possible d'injecter une instance de la classe **ModelMap** ou **Model** :
 +
 +<sxh java>
 + @getMapping
 + public String messageAction(ModelMap model) {
 + model.put("message","Ceci est un message");
 + return "main/index";
 + }
 +</sxh>
 +
 +Il est également possible de charger une vue et de lui passer des variables depuis une instance de **ModelAndView** :
 +
 +<sxh java>
 + @RequestMapping
 + public ModelAndView index() {
 + ModelAndView mv=new ModelAndView("main/index");
 + mv.addObject("Title","Titre de la page");
 + return mv;
 + }
 +</sxh>
 +
 +voir [[https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-ann-return-types|Return values]]
 +
 +==== Redirections ====
 +
 +Une action d'un contrôleur peut éventuellement rediriger vers une autre action, après avoir effectué ses propres traitements, avec éventuel passage de paramètres de type flash :
 +
 +<sxh java>
 + @RequestMapping
 + public RedirectView submitAction(@RequestParam String value, RedirectAttributes attrs) {
 + //Traitements
 + attrs.addFlashAttribute("message","Formulaire envoyé...");
 + return new RedirectView("/");
 + }
 +</sxh>
 +
 +La vue associée à la route **/** pourra accéder à la variable **message** et l'afficher.
  
  
 ====== Ressources ====== ====== Ressources ======
   * [[http://www.baeldung.com/spring-requestmapping|RequestMapping annotation]]   * [[http://www.baeldung.com/spring-requestmapping|RequestMapping annotation]]
  • framework-web/spring/controllers.1548122583.txt.gz
  • Dernière modification : il y a 6 ans
  • (modification externe)