Différences
Ci-dessous, les différences entre deux révisions de la page.
| 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] jcheron | framework-web:spring:controllers [2023/09/26 23:51] (Version actuelle) – [Redirections] jcheron | ||
|---|---|---|---|
| Ligne 21: | Ligne 21: | ||
| <sxh java> | <sxh java> | ||
| - | @RestController | + | @Controller |
| @RequestMapping("/ | @RequestMapping("/ | ||
| 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 | + | |
| - | voir [[https:// | + | * voir [[https:// |
| - | voir [[https:// | + | |
| + | **Injection de dépendance :** | ||
| + | |||
| + | Certains objets, en fonction de leur type, ou grâce aux annotations, | ||
| + | |||
| + | **Exemple :** récupération de la requête **HttpServletRequest** | ||
| + | <sxh java> | ||
| + | @GetMapping("/ | ||
| + | public Person getPerson(@PathVariable Long id, HttpServletRequest request) { | ||
| + | // ... | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | * voir [[https:// | ||
| ===== 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!"; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== Appel d'une vue ==== | ||
| + | |||
| + | Par défaut, le String retourné correspond à un nom de vue (dans ce cas main/ | ||
| + | |||
| + | <sxh java> | ||
| + | @RequestMapping | ||
| + | public String index() { | ||
| + | return " | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | === Passage de variables à la vue === | ||
| + | |||
| + | Il est possible d' | ||
| + | |||
| + | <sxh java> | ||
| + | @getMapping | ||
| + | public String messageAction(ModelMap model) { | ||
| + | model.put(" | ||
| + | return " | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | 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(" | ||
| + | mv.addObject(" | ||
| + | return mv; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | voir [[https:// | ||
| + | |||
| + | ==== Redirections ==== | ||
| + | |||
| + | Une action d'un contrôleur peut éventuellement rediriger vers une autre action, après avoir effectué ses propres traitements, | ||
| + | |||
| + | <sxh java> | ||
| + | @RequestMapping | ||
| + | public RedirectView submitAction(@RequestParam String value, RedirectAttributes attrs) { | ||
| + | // | ||
| + | attrs.addFlashAttribute(" | ||
| + | return new RedirectView("/" | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | La vue associée à la route **/** pourra accéder à la variable **message** et l' | ||
| ====== Ressources ====== | ====== Ressources ====== | ||
| * [[http:// | * [[http:// | ||