в качестве параметра в вашем методе.

я есть следующий метод в моем Spring MVC @Controller:

@RequestMapping(method = RequestMethod.GET)
public String testUrl(@RequestParam(value="test") Map<String, String> test) {   
    (...)
}

Я называю это так:

http://myUrl?test[A]=ABC&test[B]=DEF

Однако «тестовая» переменная RequestParam всегда равна нулю

Что мне нужно сделать, чтобы заполнить «тестовую» переменную?

 Federico Piazza26 июл. 2018 г., 17:10
Вы решили это? Если да, можете ли вы опубликовать свой ответ?
 Christos Loupassakis19 дек. 2018 г., 22:26
Извините за этот поздний ответ, но я все равно не могу помочь. Я работал над проектом более года, и, насколько я помню, я не мог найти жизнеспособное решение, поэтому я просто отбросил эту часть и нашел альтернативный способ сделать то, что я должен был сделать. Сталь в ожидании решения

Ответы на вопрос(3)

етров с одинаковым именем в HashMap. Однако он может легко конвертировать их в список, массив или набор.

@RequestMapping(value = "/testset", method = RequestMethod.GET)
    public String testSet(@RequestParam(value = "test") Set<String> test) {

        return "success";
    }

Я проверил с почтальоном, какhttp://localhost:8080/mappings/testset?test=ABC&test=DEF

Вы увидите набор с данными, [ABC, DEF]

 Christos Loupassakis22 нояб. 2017 г., 00:43
Мне нужен не список, а карта. Другими словами, я должен создать собственный редактор?

содержащий карту, которая должна быть заполнена Spring, а затем использовать этот класс в качестве параметра вашего@RequestMapping аннотированный метод.

В вашем примере создайте новый класс

public static class Form {
   private Map<String, String> test;
   // getters and setters
}

Тогда вы можете использоватьForm в качестве параметра в вашем методе.

@RequestMapping(method = RequestMethod.GET)
public String testUrl(Form form) {
  // use values from form.getTest()
}

https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestParam.html

Если параметром метода является Map или MultiValueMap и имя параметра не указано, то параметр карты заполняется всеми именами и значениями параметров запроса.

Таким образом, вы бы изменили свое определение следующим образом.

@RequestMapping(method = RequestMethod.GET)
public String testUrl(@RequestParam Map<String, String> parameters) 
{   
  (...)
}

И в ваших параметрах, если вы назвали URLHTTP: // myUrl A = ABC & B = DEF

Вы бы в своем методе

parameters.get("A");
parameters.get("B");
 Christos Loupassakis22 нояб. 2017 г., 00:46
Мне не нужно извлекать все параметры запроса, поэтому я добавил (value = "test"). И даже при их извлечении, URL "test [A] = ABC & test [B] = DEF" дает мне "test [A]" в качестве ключа, а не просто "A"

Ваш ответ на вопрос