name - spring mvc español
cómo capturar múltiples parámetros usando @RequestParam usando spring mvc? (4)
A partir de Spring 3.0, también puede usar MultiValueMap para lograr esto:
Un ejemplo rudimentario sería:
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";
}
Supongamos que se hace clic en un hipervínculo y se lanza una url con la siguiente lista de parámetros myparam=myValue1&myparam=myValue2&myparam=myValue3
. Ahora, ¿cómo puedo capturar todos los parámetros usando @RequestRaram
en Spring mvc?
Mi requisito es que tengo que capturar todos los parámetros y ponerlos en un mapa.
¡Por favor ayuda!
Para obtener todos los parámetros a la vez, intente esto:
public ModelAndView postResultPage(@RequestParam MultiValueMap<String, String> params)
Esta característica se describe en @RequestParam
java doc (3. Párrafo):
Anotación que indica que un parámetro de método debe vincularse a un parámetro de solicitud web. Compatible con métodos de controlador anotados en entornos de servlets y portlets.
Si el tipo de parámetro de método es Mapa y se especifica un nombre de parámetro de solicitud, el valor del parámetro de solicitud se convierte en un Mapa suponiendo que hay una estrategia de conversión adecuada disponible.
Si el parámetro del método es
Map<String, String>
oMultiValueMap<String, String>
y no se especifica un nombre de parámetro, el parámetro de mapa se rellena con todos los nombres y valores de parámetros de solicitud.
Parece que no puedes obtener
Map<String,String>
porque todos tus params tienen el mismo nombre "myparam"
Pruebe esto en su lugar:
public ModelAndView method(@RequestParam("myparam") List<String> params) { }
@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";
}
Puede usar RequestParam de la manera mencionada anteriormente.