89 votes

Comment obtenir explicitement des données post dans Spring MVC ?

Existe-t-il un moyen d'obtenir les données du poste lui-même ? Je sais que Spring gère la liaison des données post aux objets Java. Mais, étant donné deux champs que je veux traiter, comment puis-je obtenir ces données ?

Par exemple, supposons que mon formulaire comportait deux champs :

 <input type="text" name="value1" id="value1"/>
 <input type="text" name="value2" id="value2"/>

Comment vais-je procéder pour récupérer ces valeurs dans mon contrôleur ?

145voto

Jacob Mattison Points 32137

Si vous utilisez l'une des instances de contrôleur intégrées, l'un des paramètres de votre méthode de contrôleur sera l'objet Request. Vous pouvez appeler request.getParameter("value1") pour obtenir la valeur des données POST (ou PUT).

Si vous utilisez des annotations Spring MVC, vous pouvez ajouter un paramètre annoté aux paramètres de votre méthode :

@RequestMapping(value = "/someUrl")
public String someMethod(@RequestParam("value1") String valueOne) {
 //do stuff with valueOne variable here
}

43voto

simon Points 1025

Une autre réponse à la question exacte de l'OP est de définir le type de contenu consumes %-% sur "text/plain", puis de déclarer un paramètre d'entrée @RequestBody String. Cela transmettra le texte des données de PUBLICATION en tant que variable String déclarée (postPayload dans l'exemple suivant).

Bien sûr, cela suppose que votre charge utile POST est des données de texte (comme l'OP a déclaré était le cas).

Exemple :

    @RequestMapping(value = "/your/url/here", method = RequestMethod.POST, consumes = "text/plain")
    public ModelAndView someMethod(@RequestBody String postPayload) {    
        // ...    
    }

27voto

BalusC Points 498232

Spring MVC s'exécute sur le dessus de l'API Servlet. Donc, vous pouvez utiliser HttpServletRequest#getParameter() pour cela :

String value1 = request.getParameter("value1");
String value2 = request.getParameter("value2");

Le HttpServletRequest devrait déjà être disponible à l'intérieur de Spring MVC comme l'un des arguments de la méthode handleRequest().

0voto

Suisse Points 1251

Vous pouvez simplement passer l'attribut que vous voulez sans aucune annotation dans votre contrôleur :

@RequestMapping(value = "/someUrl")
public String someMethod(String valueOne) {
 //do stuff with valueOne variable here
}

Fonctionne avec GET et POST

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X