Если кто-то все еще борется с этим, вот как это должно быть сделано:
Ввод формы:
<input name="myParam" value="1"/>
<input name="myParam" value="4"/>
<input name="myParam" value="19"/>
Метод контроллера:
@RequestMapping
public String deletePlaces(@RequestParam("myParam") Long[] myParams) {
//myParams will have 3 elements with values 1,4 and 19
}
Этоработает так же для String[]
Integer[]
Long[]
и, возможно, больше.POST
, GET
, DELETE
будут работать так же.
Имя параметра должно совпадать с тегом name
из формы ввода.Никаких дополнительных []
не требуется и т. Д. Фактически, имя параметра может быть опущено, если имя аргумента метода совпадает с именем ввода, поэтому мы можем получить сигнатуру метода, подобную этой:
@RequestMapping
public String deletePlaces(@RequestParam Long[] myParams)
, и это будетвсе еще работает
Нечто дополнительное: Теперь, если у вас есть модель предметной области, скажем, Place
, а у вас есть PlaceRepository
, предоставив Place#id
в качестве значения ваших входных данных, Spring может выполнить поиск, связанный собъекты для нас.Так что, если мы предположим, что входные данные формы выше содержат идентификаторы пользователей в качестве значений, то мы можем просто записать это в контроллер:
public String deletePlaces(@RequestParam Place[] places) {
//places will be populated with related entries from database!
}
Не правда ли?