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?

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;
}

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.