web-dev-qa-db-fra.com

Comment obtenir explicitement des données de publication dans Spring MVC?

Existe-t-il un moyen d'obtenir les données de poste proprement dites? Je sais que spring gère la liaison des données de publication à des objets Java. Mais, étant donné que deux champs doivent être traités, comment puis-je obtenir ces données?

Par exemple, supposons que mon formulaire comporte deux champs:

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

Comment pourrais-je récupérer ces valeurs dans mon contrôleur?

70
user130532

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 de 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
}
118
Jacob Mattison

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

Bien sûr, cela suppose que votre POST charge utile est constitué de données texte (comme l'OP l'a indiqué)).

Exemple:

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

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

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

Le HttpServletRequest devrait déjà être disponible dans Spring MVC en tant que l'un des arguments de méthode de la méthode handleRequest().

25
BalusC