Привязка списка в @RequestParam

Я отправляю некоторые параметры из формы следующим образом:

myparam[0] : 'myValue1' myparam[1] : 'myValue2' myparam[2] : 'myValue3' otherParam : 'otherValue' anotherParam : 'anotherValue' ... 

Я знаю, что могу получить все параметры в методе controllerа, добавив параметр, например

 public String controllerMethod(@RequestParam Map params){ .... } 

Я хочу привязать параметры myParam [] (а не другие) к списку или массиву (все, что поддерживает индексный порядок), поэтому я попытался с синтаксисом, например:

 public String controllerMethod(@RequestParam(value="myParam") List myParams){ .... } 

а также

 public String controllerMethod(@RequestParam(value="myParam") String[] myParams){ .... } 

но ни один из них не привязывает myParams. Даже когда я добавляю значение к карте, он не может привязывать параметры:

 public String controllerMethod(@RequestParam(value="myParam") Map params){ .... } 

Есть ли какой-либо синтаксис для привязки некоторых параметров к списку или массиву без необходимости создания объекта как @ModelAttribute с атрибутом списка?

благодаря

Массивы в @RequestParam используются для привязки нескольких параметров с тем же именем:

 myparam=myValue1&myparam=myValue2&myparam=myValue3 

Если вам нужно привязать индексированные параметры @ModelAttribute , я думаю, вам нужно @ModelAttribute любом случае.

Или вы могли бы просто так:

 public String controllerMethod(@RequestParam(value="myParam[]") String[] myParams){ .... } 

Это работает, например, для таких форм:

   

Это самое простое решение 🙂

Просто дополняя то, что сказали участники Donal Fellows, вы можете использовать List with @RequestParam

 public String controllerMethod(@RequestParam(value="myParam") List myParam){ .... } 

Надеюсь, поможет!

Один из способов добиться этого (хакерским способом) – создать class-оболочку для List . Как это:

 class ListWrapper { List myList; // getters and setters } 

Тогда ваша подпись метода controllerа будет выглядеть так:

 public String controllerMethod(ListWrapper wrapper) { .... } 

Нет необходимости использовать аннотацию @RequestParam или @ModelAttribute если имя коллекции, которое вы передаете в запросе, совпадает с именем поля коллекции classа-оболочки, в моем примере параметры запроса должны выглядеть так:

 myList[0] : 'myValue1' myList[1] : 'myValue2' myList[2] : 'myValue3' otherParam : 'otherValue' anotherParam : 'anotherValue' 

Подписывая то, что сказал Василий в комментарии к самому вопросу, если method = RequestMethod.GET то вы можете использовать @RequestParam List groupVal.

Затем вызов службы со списком параметров выполняется так же просто, как:

 API_URL?groupVal=kkk,ccc,mmm 

Измените значение скрытого поля с помощью переключателя флажка, как показано ниже …

HTML:

   Delete All 

Автор сценария:

 function toggle(obj) {`var $input = $(obj); if ($input.prop('checked')) { $('#deleteAll').attr( 'value','Checked'); } else { $('#deleteAll').attr( 'value','Unchecked'); } } 
  • Список привязок к DataGridView в WinForm
  • Кто-нибудь знает набор привязок C # для FFMPEG?
  • Как вы привязываете CollectionContainer к коллекции в модели представления?
  • как связать datatable с datagridview в c #
  • Ошибка WPF 40 Ошибка BindingExpression path: свойство не найдено в 'объекте'
  • Как связать команду в WPF с обработчиком события двойного щелчка элемента управления?
  • Конфликты Datacontext
  • «Элемент коллекции должен быть пустым перед использованием ItemsSource».
  • Ошибка привязки элемента ElementName
  • Ввод текста заголовка WPF datagrid
  • Связывание Datagrid в WPF
  • Interesting Posts

    Завершение умной вкладки (для каталогов)?

    Как оживить добавление или удаление строк ListView Android

    Восстановление разрешений реестра Windows по умолчанию для раздела служб

    Автоматическое форматирование источника Xcode

    Как получить идентификатор приложения Android?

    PL / SQL ORA-01422: точная выборка возвращает больше запрошенного количества строк

    Подавление выхода

    UIForm с prependId = “false” breaks

    Назначение массива ArrayList в Java

    Возможно ли (и безопасно / надежно / не повреждать) использовать 20-контактный блок питания ATX с 24-контактной материнской платой ATX?

    Как отправить JSON вместо строки запроса с $ .ajax?

    Как автоматически войти в систему после сна

    В чем разница между размером и размером на диске?

    Каков наиболее эффективный способ получить индекс iteratorа std :: vector?

    Что такое ярлык клавиатуры для архивирования сообщения электронной почты в приложении Windows 10 Mail?

    Давайте будем гением компьютера.