Spring MVC Comment prendre la valeur du paramètre d'une requête GET HTTP dans ma méthode de contrôleur?

87

Dans cette période, j'étudie l'exemple de vitrine Spring MVC (téléchargeable à partir du tableau de bord STS) et j'ai une question simple sur les Request Mappingexemples:

1) Dans ma home.jsppage j'ai ce lien:

        <li>
            <a id="byParameter" class="textLink" href="<c:url value="/mapping/parameter?foo=bar" />">By path, method, and presence of parameter</a>
        </li>

Comme vous pouvez le voir par ce lien, je fais une requête HTTP GET ayant un paramètre "foo" contenant la valeur: "bar".

Cette requête HTTP est gérée par la méthode suivante de la classe de contrôleur MappingController:

@RequestMapping(value="/mapping/parameter", method=RequestMethod.GET, params="foo")
public @ResponseBody String byParameter() {
    return "Mapped by path + method + presence of query parameter! (MappingController)";
}

Cette méthode gère les requêtes HTTP (de GETtype uniquement ) qui ont un paramètre nommé "foo"

Comment puis-je prendre la valeur ("bar") de ce paramètre et la mettre dans une variable à l'intérieur du code de ma méthode by Parameter?

AndreaNobili
la source

Réponses:

184

Comme expliqué dans la documentation , en utilisant une @RequestParamannotation:

public @ResponseBody String byParameter(@RequestParam("foo") String foo) {
    return "Mapped by path + method + presence of query parameter! (MappingController) - foo = "
           + foo;
}
JB Nizet
la source
3
Merci beaucoup pour votre réponse claire et pour la référence à la documentation
AndreaNobili
3
Dans le cas où il y a 10 paramètres, devons-nous le faire 10 fois ou il existe un meilleur moyen pour ce scénario
Comptez
2
@Count: cliquez sur le lien que j'ai donné à la documentation, puis faites défiler un peu vers le haut jusqu'au paragraphe "Types d'arguments de méthode pris en charge", et lisez la partie sur "Objets de commande ou de formulaire"
JB Nizet
43

Vous pouvez également utiliser un modèle d'URI. Si vous avez structuré votre demande en une URL reposante, Spring pourrait analyser la valeur fournie à partir de l'URL.

HTML

<li>
    <a id="byParameter" 
       class="textLink" href="<c:url value="/mapping/parameter/bar />">By path, method,and
           presence of parameter</a>
</li>

Manette

@RequestMapping(value="/mapping/parameter/{foo}", method=RequestMethod.GET)
public @ResponseBody String byParameter(@PathVariable String foo) {
    //Perform logic with foo
    return "Mapped by path + method + presence of query parameter! (MappingController)";
}

Documentation du modèle d'URI Spring

Kevin Bowersox
la source