Les projets Spring MVC nécessitent souvent de transmettre des paramètres aux contrôleurs pour traiter les requêtes HTTP. Cette explication détaille les méthodes pour gérer les paramètres individuels et groupés, en abordant l'utilisation des types primitifs et des classes d'emballage.
Paramètre unique
Dans Spring MVC, un contrôleur peut recevoir un paramètre unique en l'associant à une requête GET. Un exemple modifié est présenté ci-dessous, avec des noms de classe et de méthode ajustés pour réduire la similarité :
package com.app.web;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/utilisateur")
public class UtilisateurController {
@GetMapping("/recuperer")
public String obtenirUtilisateur(@RequestParam String identifiant) {
return "Données récupérées pour : " + identifiant;
}
}
Le nom du paramètre envoyé par le client doit correspondre précisément à celui spécifié dans l'annotation @RequestParam ou dans la signature de la méthode pour que l'affectation se fasse correctement.
Paramètres multilpes
Pour plusieurs paramètres, l'ordre de transmission n'est pas critique ; seule la cohérence des noms est requise. Voici un exemple révisé :
package com.app.web;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/utilisateur")
public class UtilisateurController {
@GetMapping("/details")
public String afficherDetails(@RequestParam String identifiant, @RequestParam Integer age) {
return "Informations : ID=" + identifiant + ", Âge=" + age;
}
}
Types primitifs et classes d'emballage
Lorsque des types primitifs comme int sont utilisés, le paramètre doit impérativement être fourni dans la requête. Avec des classes d'emballage telles que Integer, il peut être facultatif. Un exemple avec int illustre ce comportement :
package com.app.web;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/utilisateur")
public class UtilisateurController {
@GetMapping("/age")
public String obtenirAge(@RequestParam String identifiant, @RequestParam int annees) {
return "Âge de " + identifiant + " : " + annees + " ans";
}
}
Si le paramètre annees est absent, une erreur d'exécution se produit. L'usage des classes d'emballage est recommandé pour les paramètres optionnels, à l'exception des types primitifs non-nullable comme boolean.