Как захватить несколько параметров с помощью @RequestParam с помощью spring mvc?
Предположим, что нажата гиперссылка, и URL-адрес запускается со следующим списком параметров myparam=myValue1&myparam=myValue2&myparam=myValue3
. Теперь, как я могу захватить все параметры с помощью @RequestRaram
в spring mvc?
Моим требованием я должен захватить все параметры и поместить их на карту.
Пожалуйста, помогите!
Ответы
Ответ 1
@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";
}
Вы можете использовать RequestParam указанным выше способом.
Ответ 2
Кажется, вы не можете получить
Map<String,String>
потому что все ваши параметры имеют одно и то же имя "myparam"
Попробуйте это вместо:
public ModelAndView method(@RequestParam("myparam") List<String> params) { }
Ответ 3
Чтобы получить все параметры сразу, попробуйте следующее:
public ModelAndView postResultPage(@RequestParam MultiValueMap<String, String> params)
Эта функция описана в @RequestParam
java doc (3. Параграф):
Аннотации, указывающие, что параметр метода должен быть привязан к параметру веб-запроса. Поддерживаются методы аннотированных обработчиков в средах Servlet и Portlet.
Если тип параметра метода - Map и задано имя параметра запроса, то значение параметра запроса преобразуется в карту, предполагая, что соответствующая стратегия преобразования доступна.
Если параметр метода Map<String, String>
или MultiValueMap<String, String>
, а имя параметра не указано, тогда параметр карты заполняется всеми именами и значениями параметров запроса.
Ответ 4
По состоянию на Spring 3.0 вы также можете использовать MultiValueMap, чтобы достичь этого:
Простейшим примером может быть:
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";
}