Подтвердить что ты не робот

Как захватить несколько параметров с помощью @RequestParam с помощью spring mvc?

Предположим, что нажата гиперссылка, и URL-адрес запускается со следующим списком параметров myparam=myValue1&myparam=myValue2&myparam=myValue3. Теперь, как я могу захватить все параметры с помощью @RequestRaram в spring mvc?

Моим требованием я должен захватить все параметры и поместить их на карту.

Пожалуйста, помогите!

4b9b3361

Ответ 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";

}