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!
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.
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) { }
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>
ouMultiValueMap<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.
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";
}