web-dev-qa-db-fra.com

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

Pendant cette période, j'étudie l'exemple de démonstration Spring MVC (téléchargeable depuis le dasboard de STS) et j'ai une question simple à propos des exemples Request Mapping:

1) Dans ma page home.jsp, 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 sur ce lien, je suis en train de faire une requête HTTP GET avec un paramètre "foo" contenant la valeur: "bar".

Cette demande 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 (uniquement de type GET) ayant un paramètre nommé "foo".

Comment puis-je prendre la valeur ("barre") de ce paramètre et la mettre dans une variable dans le code de ma méthode by Parameter?

85
AndreaNobili

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

public @ResponseBody String byParameter(@RequestParam("foo") String foo) {
    return "Mapped by path + method + presence of query parameter! (MappingController) - foo = "
           + foo;
}
183
JB Nizet

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>

Contrôleur

@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 Spring URI

42
Kevin Bowersox