comment capturer plusieurs paramètres en utilisant @RequestParam en utilisant spring mvc?

supposons qu'un hyperlien est cliqué et qu'une url est lancée avec la liste de paramètres suivante myparam=myValue1&myparam=myValue2&myparam=myValue3. Maintenant, comment puis-je capturer tous les paramètres en utilisant @RequestRaram au printemps mvc?

mon exigence est que je dois capturer tous les params et les mettre dans une carte.

s'il vous Plaît aider!

26
demandé sur BalusC 2014-03-14 11:39:26

4 réponses

@RequestMapping(value = "users/newuser", method = RequestMethod.POST)   
public String saveUser(@RequestParam Map<String,String> requestParams) throws Exception{
   String userName=requestParams.get("email");
   String password=requestParams.get("password");

   //perform DB operations

   return "profile";
}

Vous pouvez utiliser RequestParam mentionnés ci-dessus.

28
répondu Touchstone 2014-03-14 09:17:48

Il semble que vous ne pouvez pas obtenir

Map<String,String>

parce que tous vos params ont le même nom "myparam"

Essayez plutôt ceci:

public ModelAndView method(@RequestParam("myparam") List<String> params) { }
20
répondu vvelikodny 2015-11-17 23:24:13

Pour obtenir tous les paramètres à la fois, essayez ceci:

public ModelAndView postResultPage(@RequestParam MultiValueMap<String, String> params)

Cette fonctionnalité est décrite dans le @RequestParam java doc (3. Paragraphe):

Annotation qui indique qu'un paramètre de méthode doit être lié à un paramètre de requête web. Prise en charge des méthodes de handler annotées dans les environnements Servlet et Portlet.

si le type de paramètre de méthode est Map et qu'un nom de paramètre de requête est spécifié, alors la valeur du paramètre de requête est convertie en Map en supposant qu'une stratégie de conversion appropriée est disponible.

si le paramètre de la méthode est Map<String, String> ou MultiValueMap<String, String> et un nom de paramètre n'est pas spécifié, alors le paramètre map est rempli avec tous les noms et valeurs de paramètre de la requête.

10
répondu Ralph 2014-03-14 09:27:59

A partir du printemps 3.0, vous pouvez aussi utiliser MultiValueMap pour réaliser ceci:

un exemple rudimentaire serait:

public String someMethod(@RequestParam MultiValueMap<String,String> params) {

    final Iterator<Entry<String, List<String>>> it = params.entrySet().iterator();

    while(it.hasNext()) {
        final String k = it.next().getKey();
        final List<String> values = it.next().getValue();
    }

    return "dummy_response";

}
4
répondu Brian 2017-09-01 03:50:22